unDonutのパネルでYouTube動画を再生 修正
ふむふむ、これもエンコードしている場合があるわけね。
読みこめなかった不具合、修正しました。
すんませんです。
間違っているのかどうかすらわからんけど
とりあえず解決した。
escapeしてから、:、;、=、?、"、#、$、%、&、を戻した方が良さそうなので
function urlEscape(str_url) { var arr_code = ['3a','3b', '3d', '3f', 22, 23, 24, 25, 26]; var str_url = escape(str_url); var i, str_code; for(i in arr_code) { str_code = '%' + arr_code[i]; str_url = str_url.replace(eval('/' + str_code + '/ig'), unescape(str_code)); }; return str_url; };
な感じで変換した。
(何か物足りない気もしないでもないし、無駄なことしている気も)
後からもっと簡単に書けるのではと、書いてみたのが
escape(string).replace(/%(3a|3b|3d|3f|22|23|24|25|26)/ig, function(code) {return unescape(code)});
これでいけた。
どっちもFunciotnオブジェクトを1回使っているので、そんな変わらないだろうけど。
追記
まだ短くできた。
escape(string).replace(/%(3[abdf]|2[2-6])/ig, function(code) {return unescape(code)});
追記
2[2-6]だけでなく、0-9にした方がいいのかも。
さほど影響無いだろうけど、UPしたファイルで使っているのはこっそり書き換えといたw