IE,FireFox,safari,chrome,Opera対応文字列検索ブックマークレットの作り方
ブックマークレットというのがあって、
ブラウザのブックマーク(お気に入り)に登録しておくと、色々便利な機能を使うことが出来ます。
特に多いのが、選択した文字列をWikipedia/英和辞典/和英辞典などで検索するというもの。ところが、インターネットエクスプローラー用です、FireFox用です、と分けてあったり、そもそもFireFoxでしか動かない物が多かったりするのですよね。
Google英語検索ブックマークレットは、インターネットエクスプローラーと、FireFoxと、ChromeとSafariで動作確認してあります。あ。Operaも。
ということで、インターネットエクスプローラーと、FireFoxと、ChromeとSafari(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
カテゴリ:
javascript
トラックバック(0)
このブログ記事を参照しているブログ一覧: IE,FireFox,safari,chrome,Opera対応文字列検索ブックマークレットの作り方
このブログ記事に対するトラックバックURL: http://mogya.com/mt/mt-tb.cgi/719
コメントする