获取谷歌浏览器扩展中网页的选定文本

发布于 2024-09-05 22:42:52 字数 256 浏览 6 评论 0原文

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

文本框示例:

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

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

I am developing a Google Chrome extension. When a popup is clicked, I would like the input box present in the popup.html file to contain the selected text of the current webpage.

Example textbox:

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

When text is selected in a webpage, the textbox should contain the selected word. I tried with chrome.extension.getBackgroundPage().getSelection() but it is not working.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

如果没有 2024-09-12 22:42:53

由于 Chrome 的极端安全预防措施,您想要做的事情需要大量编码。

chrome.extension.getBackgroundPage().getSelection() 将不起作用,因为“BackgroundPage”不是当前网页。您需要类似的东西:

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

但是,将该文本传输回弹出窗口是一个漫长且令人偏头痛的过程。读
内容脚本和扩展消息传递(如果您准备好迎接挑战)。

What youre trying to do requires quite a bit of coding because of Chrome's extreme security precautions.

chrome.extension.getBackgroundPage().getSelection() will not work because the "BackgroundPage" is not the current webpage. You need something like:

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

However, to transfer that text back to the popup is a long and migraine-causing process. Read
Contentscripts and Extension Messaging if youre up for the challenge.

冰雪梦之恋 2024-09-12 22:42:53

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

here is another simple solution to get the selected the text in the form of string, you can use this string easily to append a div element child into your code:

              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();
葬花如无物 2024-09-12 22:42:52

谷歌群组上有一个关于此问题的帖子:如何获取来自选择的 HTML 代码?

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

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

There was a thread about this on google groups: 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); 
}

You can use this in the console or in a plugin, either way.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文