- 締切済み
GoogleChromeで選択文字列を取得する方法を教えて下さい。
GoogleChromeで選択文字列を取得する方法を教えて下さい。 GoogleChromeでページ内で選択した文字列を取得し、表示させるプログラムを作成しています。 いろいろ検索してみたところ、window.getSelection()+''; のようにすれば取得できるようなことが書いて あったんですが、うまくいきませんでした。 function test() { var selection = window.getSelection()+''; return selection; } もちろん window.getSelection() でも駄目でした。 わかる方いらっしゃいましたら、教えて頂けると嬉しいです。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- nekomikekamo
- ベストアンサー率73% (71/97)
#1、#2です。 chromeのextensions ですと、popup.html内で表示されているページの情報を取得するのに、 直接windowオブジェクトは参照できませんね@@; chrome.extension.getViews()とかコンテント・スクリプトについても、 知る必要があると思います。 下記参考まで。 http://dev.screw-axis.com/doc/chrome_extensions/
- yyr446
- ベストアンサー率65% (870/1330)
popup されるという chrome の extensions こおいうのはどお。 function popup(){ var popwin=window.open(); popwin.document.open(); popwin.document.write("<script>"); popwin.document.write("document.write(window.opener.getSelection().toString())"); popwin.document.write("<"+"/script>"); popwin.document.close(); } あるいは、 function popup(){ var popwin=window.open(); popwin.document.open(); popwin.document.write(window.getSelection().toString()); popwin.document.close(); }
お礼
回答ありがとうございます! 関数自体はそのような感じでいけそうですが、どうも受け渡しがうまくいってないようでした(^^;) 全体の流れをもっと勉強してみようと思います。
- nekomikekamo
- ベストアンサー率73% (71/97)
#1です。 申し訳ありません。いくつか確認です。 選択しようとしている文字列は、通常のテキストノードですか? それともテキストボックスやテキストエリアの文字列ですか? それ以外ですか? window.getSelection()を使用されていたため、通常のテキストノードかと思いましたが。
補足
度重なる返答、ありがとうございます。 取得しようとしているのは通常のテキストノードです。 やりたいことをもう少し説明しますと、開いているページから文字列を選択し、アイコンをクリックすると その内容が popup されるという chrome の extensions を作成してみようと思います。 とここまで書いてみて、popup される内容の popup.html 内で window.getSelectionしてるのがまずい気がしてきました・・・。
- nekomikekamo
- ベストアンサー率73% (71/97)
こちらでしょうか? https://developer.mozilla.org/ja/DOM/window.getSelection 「明示的にtoStringを呼び出す必要があります」 window.getSelection().toString(); 確認したのは、Chrome5.0です。
お礼
回答ありがとうございます! 以下のように試してみましたが、うまくいきませんでした。 function test() { var selection = window.getSelection().toString(); document.write( "<p>" + selection + "</p>") ; } selectionに直接適当な文字列をセットした場合は、うまく表示されるんですけど。。。
お礼
参考になるページをありがとうございます。 成る程成る程、コンテントスクリプト用のjsを用意して、 fuction test() { var views = chrome.extension.getViews(); var selection = views.getSelection().toString(); } のような形で取得。その値をpopup.htmlに受け渡すイメージでよさそうですかね。 (受け渡し方もそれはそれでよくわからないのですが(苦笑)DOMっていうのを使えばいいのかな?) 全体の流れをしっかり把握する必要がありそうですね(^^;) 触り始めてまだ三日なので、しっかり勉強したいと思います。