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!!
コメント