2013-10-03 35 views
16

Chrome拡張機能に選択したテキストを表示する方法を探しています。Chrome拡張機能で選択したテキストを取得する

私は元気になりたいです。 Facebookのフィード内のテキストを選択し、私のアイコンをクリックするとそれが表示され、エクステンションに選択されたテキストが表示されます。

私は今のところこれを得た:

chrome.tabs.executeScript(null, 
    {code:"alert(window.getSelection().toString());"}) 

それが選択したテキストを取得し、Chromeのメッセージとそれを警告します。しかし、私は自分のHTMLポップアップにそれを表示したい。私はこのように書いておきたい:

document.getElementById("output").value = "Selected text here(but how)" 

助けが必要です!これについて他の質問があることは分かっていますが、私が望むものを正確に教えてくれませんでした。

+0

これは私がしてしまったものである: chrome.tabs.executeScript(ヌル、{コード: "window.getSelection()のtoString();"}、 関数(結果){ のdocument.getElementById(」出力 ")。値=結果; } 作品! –

答えて

26

はあなたがで実行されるコードで評価し、最後の式を使用することができますを使用することができますコールバック関数:

chrome.tabs.executeScript({ 
    code: "window.getSelection().toString();" 
}, function(selection) { 
    document.getElementById("output").value = selection[0]; 
}); 
+0

同じ元のフレームと異なる元のフレームでは機能しません。 また、異なるフレームにフォーカスがあるため、実際には選択されていないテキストが返されます。 また、入力フィールドでは機能しませんが、問題はありません。 'code \t let el = activeWindow.document.activeElement; \t場合(isTextElem(エル)){ \t \t(エル&& el.selectionStartの 'たselectionStart'!== el.selectionEnd){ \t \t \tリターンがel.value.substring場合(el.selectionStart、el.selectionEnd ); \t \t} \t} ' – vitaliydev

2

Extensions Messagingを使ってこれを行うことができます。基本的に、あなたの「バックグラウンドページ」はあなたのサービスにリクエストを送ります。たとえば、「ポップアップ」があり、それをクリックすると、あなたのサービスである「Google検索」が行われます。

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) { 
    if (request.method == "getSelection") 
     sendResponse({data: window.getSelection().toString()}); 
    else 
     sendResponse({}); // snub them. 
}); 

いくつかの参照

1)Creating a chrome extension which takes highlighted text on the page and inserts it into a textarea in popup.html

それとも、このプラグイン

2)https://chrome.google.com/webstore/detail/view-selection-source/fbhgckgfljgjkkfngcoeajbgndkeoaaj

+0

これは私のhtmlドキュメントに送信されませんか? –

関連する問題