ブックマークレットというのがあって、
ブラウザのブックマーク(お気に入り)に登録しておくと、色々便利な機能を使うことが出来ます。
特に多いのが、選択した文字列を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
ブックマークレットを作る時は、参考にしていただけると嬉しいです。