2006
Nov
4th
JavaScript で URL をエンコードする話。
手元にある古い本を参考にしていたので escape を使うことが多かったんだけど、 encodeURI あるいは encodeURIComponent を使った方が良いんだな。でもって、これらのことを調べたことがなかったのですが、Core JavaScript 1.5 Reference:Global Functions:encodeURI - MDCとCore JavaScript 1.5 Reference:Global Functions:encodeURIComponent - MDCにある通り、ともにエンコード対象外となるのは
Safari ではアドレスバーに表示される URL がエンコードされていないため、これをコピペしてリンクを作ると IE で適切にリンク先に飛べないことがあったのです。これまではその都度いちいち Firefox を起動して当該ページを開いてその URL をコピペしていたのですが、
手元にある古い本を参考にしていたので escape を使うことが多かったんだけど、 encodeURI あるいは encodeURIComponent を使った方が良いんだな。でもって、これらのことを調べたことがなかったのですが、Core JavaScript 1.5 Reference:Global Functions:encodeURI - MDCとCore JavaScript 1.5 Reference:Global Functions:encodeURIComponent - MDCにある通り、ともにエンコード対象外となるのは
アルファベット 数字 -(ハイフン) _(アンスコ) .(ビリオド) !(エクスクラメーション) ~(チルダ) *(アスタリスク) '(シングルクォート) ((開きカッコ) )(閉じカッコ)で、 encodeURI ではこれに加えて
;(セミコロン) ,(カンマ) /(スラッシュ) ?(クエスチョン) :(コロン) @(アット) &(アンパサンド) =(イコール) +(プラス) $(ドル)がエンコード対象外になるとのこと。
Safari ではアドレスバーに表示される URL がエンコードされていないため、これをコピペしてリンクを作ると IE で適切にリンク先に飛べないことがあったのです。これまではその都度いちいち Firefox を起動して当該ページを開いてその URL をコピペしていたのですが、
javascript:alert('<a href="'+encodeURI(location.href)+'" target="_blank">'+document.title+'</a>');というブックマークレットを使えば、コピペするためのタグが表示されます。そして、他の多くのブラウザではダイアログの文字列はコピペできないのですが、 Safari の場合はそれが可能なのです。これでhttp://ja.wikipedia.org/wiki/%E9%AD%81!!%E7%94%B7%E5%A1%BEというURLも簡単に作れるようになりました。
Posted by setomits at 10:06 |
Comments: 0