Safariのlocation.hrefで文字化け

 JavaScriptでツールを作成中。複数のブラウザで動作テスト。Safariだけおかしな状況になる。
 問題が出るのはlocation.href。
 Just Metal, Just Baroque.: Safari/Chrome Extension を作るときは location.href でなく document.URL

例えば 2 バイト文字が入っている場合、location.href では Safari と Chrome では異なる結果を返してしまう。

 同じWebKitでも2者で異なる結果となる。ということで、上記エントリーで紹介されているのが、

document.URL であれば双方ともエンコードされた値となるので、Safari/Chrome 共に同じソースでいける。

 という方法。なるほど。ありがとうございます。
 はてなブックマークボタンのソース(http://b.st-hatena.com/js/bookmark_button.js)を見ると同様の問題への対処がなされていることを発見。

var url = location.href;
/* Safari は location.href でパス中の URI エスケープを
* デコードしてしまうので、document.URL も調べてみる
*/
if (url.length < document.URL.length)
url = document.URL;

 とある。長さを見て判別、ということをしているわけだ。
 ということで、今後使うことになるのでメモ。


 タイトルが
 Sagariのlocation.hrefで文字化け
 になってた。「サガリ」ってなんだよ! ということで修正。恥ずかしい。
【ハラミ・サガリ】北海道産限定厳選国産牛ハラミ・サガリ 1kg焼肉福袋!【はらみ・さがり】
【韓国風☆タレ漬けハラミ】150g×4パックセット計600g焼肉店で大ブレイクの(はらみ)【はしっこ】【端っこ】【47%OFF】【ハラミ・はらみ・さがり・サガリ】
posted with look!!

コメント

タイトルとURLをコピーしました