選択文字列を翻訳したり地図検索したりするブックマークレットを作ってみました
こんちわ。松田です。
つい最近、JavaScriptを使ってマウスカーソルの選択範囲の文字列を取得する方法を知りました。
これを使って遊んでたら楽しかったので、せっかくなのでブログのネタにしたいと思います。
参考URL:http://wiki.bit-hive.com/tomizoo/pg/JavaScript%20Range%A4%CE%BB%C8%A4%A4%CA%FD
まずは選択範囲の文字列取得方法です。
ものすごーくはしょって説明すると、
重要な部分をかなり省いたので詳しくは上記URLを参考にしてください。
そしてこれを利用していろいろ作ってみました。
マウスカーソルで文字列をドラッグし、範囲選択した状態でボタンを押してみてください。
たぶん実用性はありません。
(でも時間が無かったのでIE用にしか作ってません。隙をみて作ります。。)
・選択範囲をリンクに変える
選択範囲の単語をWikipediaへのリンクにしてくれます。
ググったほうが早い!
・選択範囲を翻訳する
英語だったら日本語に、日本語だったら英語に直してくれます。
辞書引くよりは早い!けどブラウザのプラグインで事足りそう
翻訳処理自体はmuumoo.jpさんの翻訳APIをお借りしてます。
※追記:ブックマークレットから翻訳スクリプトを呼び出すと、このブログ以外のドメインでは動作しないバグがあったので作り直しました。
現在ブックマークレット版翻訳機能は下のスクリプトで動いています。
new Ajax()・・・部分をクロスドメイン可能な形式に変更し、honyaku.phpでは翻訳結果を「echo "showString({$result})";」で返すようにしました。
・選択範囲内にある地名をGoogleMapで表示させる
ネタが足りなかったのでオマケで作ろうとしたら、これに一番時間をとられました。
選択範囲の文字列をYahoo!形態素解析APIに渡して名詞部分だけをリスト化し、それをGoogleMapのGeocodingをつかって表示してます。
無理やりです。
名詞は全部地名としてGoogleMapにぶん投げちゃうので、予期せぬマーカーが立つかもしれません。
↓の文字列等で試してみてください。
[東京から新宿に向かってたはずなのに青梅についてました]
これ作ってて気付いたんですけど、「地名」って地名があるんですね。ややこしい。
で。
これだけだと役に立つも何もこのページでしか使えないので、お約束のブックマークレットにしてみました。
下のリンクをお気に入りに登録して、文字列を選択した状態でお気に入りをクリックして下さい。
これで好きなサイトで使いまくりです。
(これも現在IEのみ対応です。。。)
選択範囲をリンク
選択範囲を翻訳
選択範囲の地名を地図で表示
このブックマークレットで使用しているb_link.php, b_honyaku.php, b_map.phpは、それぞれ上のほうで紹介したスクリプトのtry{}内をechoしているだけなので省きます。
つい最近、JavaScriptを使ってマウスカーソルの選択範囲の文字列を取得する方法を知りました。
これを使って遊んでたら楽しかったので、せっかくなのでブログのネタにしたいと思います。
参考URL:http://wiki.bit-hive.com/tomizoo/pg/JavaScript%20Range%A4%CE%BB%C8%A4%A4%CA%FD
まずは選択範囲の文字列取得方法です。
ものすごーくはしょって説明すると、
- //
IEの場合 - document.selection.createRange().text
- //
Mozilla系の場合 - window.getSelection()
重要な部分をかなり省いたので詳しくは上記URLを参考にしてください。
そしてこれを利用していろいろ作ってみました。
マウスカーソルで文字列をドラッグし、範囲選択した状態でボタンを押してみてください。
たぶん実用性はありません。
(でも時間が無かったのでIE用にしか作ってません。隙をみて作ります。。)
・選択範囲をリンクに変える
選択範囲の単語をWikipediaへのリンクにしてくれます。
ググったほうが早い!
- <script
type="text/javascript"> - //<![CDATA[
- document.getElementById('button1').onclick
= function() { try { var text = null; if (document.all) { // IE var range = document.selection.createRange(); text = range.text; if (document.selection.type != 'Control') { var container = document.createElement("div"); var encap_node = document.createElement('a'); encap_node.href = 'http://ja.wikipedia.org/wiki/' + encodeURIComponent(text); container.appendChild(encap_node); encap_node.innerHTML = text; range.pasteHTML(container.innerHTML); } } else { // Mozzilla text = window.getSelection(); } } catch(e) { } - };
- //]]>
- </script>
・選択範囲を翻訳する
英語だったら日本語に、日本語だったら英語に直してくれます。
辞書引くよりは早い!けどブラウザのプラグインで事足りそう
翻訳処理自体はmuumoo.jpさんの翻訳APIをお借りしてます。
- <script
type="text/javascript"> - //<![CDATA[
- document.getElementById('button2').onclick
= function() { try { if (document.all) { // IE var range = document.selection.createRange(); if (document.selection.type != 'Control') { var params = 'text=' + encodeURIComponent(range.text); // prototype.js使ってます new Ajax.Request('/scripts/333/honyaku.php', {method: 'post', parameters: params, onComplete: function (request) { var res = request.responseText; range.text = res; }}); } } else { // Mozilla } } catch(e) { } - };
- //]]>
- </script>
※追記:ブックマークレットから翻訳スクリプトを呼び出すと、このブログ以外のドメインでは動作しないバグがあったので作り直しました。
現在ブックマークレット版翻訳機能は下のスクリプトで動いています。
new Ajax()・・・部分をクロスドメイン可能な形式に変更し、honyaku.phpでは翻訳結果を「echo "showString({$result})";」で返すようにしました。
- <script
type="text/javascript"> - //<![CDATA[
- try
{ if (document.all) { // IE var range = document.selection.createRange(); if (document.selection.type != 'Control') { // このscriptが 「showString('翻訳結果');」を返す var script = document.createElement('script'); script.type = 'text/javascript'; script.src = 'http://blog.asial.co.jp/scripts/333/honyaku2.php?text=' + encodeURIComponent(range.text); document.body.appendChild(script); } else { // Mozilla } - }
catch(e) { alert('error ga okitappoi desu..'); - }
- //
↑のscriptの結果によって呼び出される - function
showString(str) { try { if (document.all) { // IE var range = document.selection.createRange(); if (document.selection.type != 'Control') { range.text = str; } } else { // Mozilla } } catch(e) { } - }
- //]]>
- </script>
・選択範囲内にある地名をGoogleMapで表示させる
ネタが足りなかったのでオマケで作ろうとしたら、これに一番時間をとられました。
選択範囲の文字列をYahoo!形態素解析APIに渡して名詞部分だけをリスト化し、それをGoogleMapのGeocodingをつかって表示してます。
無理やりです。
名詞は全部地名としてGoogleMapにぶん投げちゃうので、予期せぬマーカーが立つかもしれません。
↓の文字列等で試してみてください。
[東京から新宿に向かってたはずなのに青梅についてました]
これ作ってて気付いたんですけど、「地名」って地名があるんですね。ややこしい。
- <script
type="text/javascript"> - //<![CDATA[
- document.getElementById('button3').onclick
= function() { try { if (document.all) { // IE var range = document.selection.createRange(); if (document.selection.type != 'Control') { var div = document.createElement('div'); div.style.position = 'absolute'; div.style.left = '10px'; div.style.top = (document.documentElement.scrollTop || document.body.scrollTop + 10) + 'px'; div.style.width = '300px'; div.style.height = '300px'; div.style.border = 'solid 1px black'; div.style.display = 'block'; var iframe = document.createElement('iframe'); iframe.src = 'http://blog.asial.co.jp/scripts/333/map.php?text=' + encodeURIComponent(range.text); iframe.height = 300; iframe.width = 300; div.appendChild(iframe); document.body.appendChild(div); } } else { // Mozilla } } catch(e) { } - };
- //]]>
- </script>
で。
これだけだと役に立つも何もこのページでしか使えないので、お約束のブックマークレットにしてみました。
下のリンクをお気に入りに登録して、文字列を選択した状態でお気に入りをクリックして下さい。
これで好きなサイトで使いまくりです。
(これも現在IEのみ対応です。。。)
選択範囲をリンク
選択範囲を翻訳
選択範囲の地名を地図で表示
このブックマークレットで使用しているb_link.php, b_honyaku.php, b_map.phpは、それぞれ上のほうで紹介したスクリプトのtry{}内をechoしているだけなので省きます。
コメントフォーム
トラックバック
最近の記事
- もうすぐ健康診断があるんだ・・・ [2010年09月02日 : 阿部恵]
- Photoshopで壁紙を作りながら、基本的な使い方を覚える [2010年09月01日 : 鴨田健次]
- はじめての共同作業 Canvas編 (node.js + websocket) [2010年09月01日 : 中川善樹]
- 「PHP×Flex(後編)」PHPテクニカルセミナー(無料)第4弾の募集を開始しました!! [2010年08月26日 : 和田記光]
- 【HTML5】Canvasでお絵かきしてみた(前編) [2010年08月25日 : 橋本章史]
- MacにgroongaのMySQL用ストレージエンジン [2010年08月23日 : 笹亀弘]
- Appleのサイトで見たiPhone4をFireworksで描いてみました-1/2 [2010年08月19日 : 和田記光]
- iPad版の会社紹介を作ってみました [2010年08月19日 : 小林有佳]
- iPhoneアプリ開発開始時に気をつけるべきファイルの取り扱い (2) [2010年08月19日 : 亀本大地]
- symfonyセミナー動画無料公開! [2010年08月13日 : 岡本雄樹]



最近のコメント