在Google Chrome扩展程序中获取网页的选定文本

时间:2010-06-19 06:43:08

标签: javascript google-chrome google-chrome-extension selection clipboard

我正在开发Google Chrome扩展程序。单击弹出窗口时,我希望popup.html文件中的输入框包含当前网页的选定文本。

示例文本框:

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

在网页中选择文字时,文本框应包含所选单词。我尝试使用chrome.extension.getBackgroundPage().getSelection(),但它无效。

3 个答案:

答案 0 :(得分:4)

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); 
}

无论哪种方式,您都可以在控制台或插件中使用它。

答案 1 :(得分:3)

这是另一个简单的解决方案,以字符串的形式获取所选文本,您可以轻松地使用此字符串将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();

答案 2 :(得分:1)

由于Chrome的极端安全预防措施,您尝试做的事情需要相当多的编码。

chrome.extension.getBackgroundPage().getSelection()无效,因为“BackgroundPage”不是当前网页。你需要这样的东西:

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

然而,将该文本转移回弹出窗口是一个漫长的偏头痛过程。读 Contentscripts and Extension Messaging如果你接受了挑战。