2008/01/24
カテゴリ : Tech
JavaScript
形態素解析
GoogleMap
翻訳
選択文字列を翻訳したり地図検索したりするブックマークレットを作ってみました
こんちわ。松田です。
つい最近、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しているだけなので省きます。
トラックバックURI
最近の記事
システム開発エンジニア募集! [2012年02月03日 : 小林有佳]
OpenVPNで細々便利な設定 [2012年01月31日 : 門脇優児]
【iOS】Viewの開発・デバッグに役立つ色々 [2012年01月23日 : 中川善樹]
PHPDocumentorの利用方法まとめ [2012年01月19日 : 笹亀弘]
Google Chart Toolsを使ってサイトマップを描こう! [2011年12月21日 : 志田仁美]
stumpwm設定v2 [2011年12月19日 : 門脇優児]
Mashup Awards 7の授賞式が行われました [2011年12月16日 : 中川善樹]
社員旅行に行きました [2011年12月12日 : 大橋寛子]
iCloud風のアイコンを作成する(Fireworks) [2011年12月07日 : 和田記光]
iScroll4でネイティブに近いスマホ向けHTMLページを作成する [2011年12月02日 : 松田惇]













コメントフォーム