Firefoxでectoizeが使えた!

以前のエントリで書いたとおり,ectoを使ってます。で,ectoizeを使ってる(というか,使おうといろいろ試している)のですが,firefoxでは文字化けして使えないことに困っていました。 javascriptなんで,文字コードの扱いがおかしいのかなぁとは漠然と予測していたのですが,なにをどうしていいやらわからずにおりました。 で,今日ぼんやり「もしかしたら」と思って検索したら。。。。

ブックマークレット

ブックマークレットの問題は、ブックマークレットのJavaScriptで escape() が用いられていることが原因です。encodeURIComponent() を使用するように変更します。(欧文のみの環境ですと、escape() のほうが問題が少ないようです。しかし日本語等、UTF-8を使用する場合では encodeURIComponent() のほうが無難です)

「むむむっ,これはもしかしたら」,とおもって,ectoizeのスクリプトを確認してみると。あるではないですか,escape!!! 「これだっ」と,さっそく変更してみると,きちんとうごきました。 変更後のスクリプトは
javascript: var baseUrl = 'ecto:'; var url = baseUrl;var title = document.title; url = url + 'title=' + encodeURIComponent (title); var currentUrl = document.location.href; url = url + '&url=' + encodeURIComponent (currentUrl); var selectedText; selectedText = getSelection (); if (selectedText != '') url = url + '&text=' + encodeURIComponent (selectedText);document.location.href=url;a
なるほど,他も検索してみると

#escape()を用いるのが一般的と思われるが、escape()はRFC2396非準拠で
#おかしなURLになるため、あえて使用しなかった。

なんて,記述もある。 JavaScript自体はほとんど解ってませんが,まぁ,動いたからよしとしておきましょう。
This entry was posted in Diary, MT and tagged . Bookmark the permalink.

コメントを残す

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>