4

Google Chrome 拡張機能を開発しています。ポップアップがクリックされたときに、popup.html ファイルにある入力ボックスに、現在の Web ページで選択されたテキストが含まれるようにします。

テキストボックスの例:

<input id="searchBox" type="text" />

Web ページでテキストが選択されている場合、テキストボックスには選択された単語が含まれている必要があります。で試しましchrome.extension.getBackgroundPage().getSelection()たが、動作しません。

4

3 に答える 3

6

これに関するスレッドが Google グループにありました: how to get HTML code from selection?

var selection = window.getSelection(); 
var range = selection.getRangeAt(0); 
if (range) { 
  var div = document.createElement('div'); 
  div.appendChild(range.cloneContents()); 
  alert(div.innerHTML); 
}

これは、コンソールまたはプラグインで使用できます。

于 2010-06-19T11:13:49.527 に答える
5

あなたがやろうとしていることは、Chrome の極端なセキュリティ対策のため、かなりのコーディングが必要です。

chrome.extension.getBackgroundPage().getSelection()「BackgroundPage」は現在の Web ページではないため、機能しません。次のようなものが必要です:

chrome.tabs.executeScript(null, {code:"alert(window.getSelection().toString());"})
//alerts the selected text

ただし、そのテキストをポップアップに戻すのは、片頭痛の原因となる長いプロセスです。挑戦するつもりなら、Contentscripts と Extension Messagingを読ん でください。

于 2010-06-19T06:58:06.513 に答える
5

選択したテキストを文字列の形式で取得する別の簡単なソリューションを次に示します。この文字列を使用して、div 要素の子をコードに簡単に追加できます。

              var text = '';
              if(window.getSelection){
                text = window.getSelection();
              }else if(document.getSelection){
                text = document.getSelection();
              }else if(document.selection){
                text = document.selection.createRange().text;
              }
              text=text.toString();
于 2011-12-26T08:02:02.783 に答える