IE,FireFox,safari,chrome,Opera対応文字列検索ブックマークレットの作り方

 ブックマークレットというのがあって、
ブラウザのブックマーク(お気に入り)に登録しておくと、色々便利な機能を使うことが出来ます。
特に多いのが、選択した文字列をWikipedia/英和辞典/和英辞典などで検索するというもの。ところが、インターネットエクスプローラー用です、FireFox用です、と分けてあったり、そもそもFireFoxでしか動かない物が多かったりするのですよね。

Google英語検索ブックマークレットは、インターネットエクスプローラーと、FireFoxと、ChromeとSafariで動作確認してあります。あ。Operaも。

ということで、インターネットエクスプローラーと、FireFoxと、ChromeとSafari(Operaも)で動く、選択した文字列に対して~するブックマークレットを作る方法まとめです。

IEで選択文字列を取得

「document.selection.createRange().text」。IE以外では全く動かない。

FireFoxで選択した文字列を取得

window.getSelection。document.getSelectionだと、Chromeやsafariで動かない。

Chrome/Safariで選択した文字列を取得

window.getSelectionでうごく。ただし、to_stringが微妙らしく、そのまま文字列として扱うことが出来ないので、「window.getSelection()+””」としておくと文字列として取得することが出来る。これは、FireFoxやOperaでも動作する。

IEとそれ以外の分岐

if(navigator.appName==”Microsoft Internet Explorer”) がまっとうだけど、長いのでdocument.allが定義されているかどうかで代用。

ここまでをまとめると

「var q=(document.all)?document.selection.createRange().text:(window.getSelection()+”);」

文字列を選択していない時

「if(!q){void(q=prompt(‘keyword:’,”))}; 」としておくと、文字列を選択していない時は入力を促すことが出来て親切。

おまけ

URLを移動させる場合、window.location.hrefにURLを入れる人が多いけれど、これもChromeで動かない。location.hrefなら共通で動く。

動作確認環境は以下の通り。

  • InternetExplorer7.0.5730.13
  • FireFox3.08
  • GoogleChrome1.0.154.53
  • Safari3.2.2
  • Opera/9.60

ブックマークレットを作る時は、参考にしていただけると嬉しいです。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です