Chrome 扩展 - 获取当前选项卡的全部文本内容

2024-01-11

我正在开发一个扩展,我需要获取当前选项卡上的整个文本内容。现在我有一个插件可以从当前选项卡中检索选定的文本。所以,本质上我正在寻找它的 ctrl-A 版本:)。这就是我到目前为止根据@Derek 的提示所做的事情。

这是在我的事件处理程序中(这只是一个,还有其他侦听器onUpdated etc):

chrome.tabs.onSelectionChanged.addListener(function(tabId,changeInfo,tab) {
  chrome.tabs.getSelected(null,function(tab) {
    chrome.tabs.sendRequest(tab.id, {method: "getSelection"}, function (response) {
      selectedtext = response.data;
    });
    chrome.tabs.sendRequest(tab.id, {method: "getText"}, function (response) {
      alltext = response.data;
    });
  });
});

这是我在内容脚本中编写的内容:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.method == "getSelection")
    sendResponse({data: window.getSelection().toString()});
  else if (request.method == "getText")
    sendResponse({data: document.body.innerText});
  else 
    sendResponse({});
});

但是,那document.body.innerText返回未定义。我需要当前选项卡的完整文本alltext。有人可以帮我解决这个问题吗? 谢谢。


您可以使用document.body.innerText or document.all[0].innerText做在内容脚本 http://code.google.com/chrome/extensions/content_scripts.html.
它将得到所有的文字内容在页面中,没有任何 HTML 代码。

或者你可以使用document.all[0].outerHTML获取整个页面的 HTML。


Example

在内容脚本中

function getText(){
    return document.body.innerText
}
function getHTML(){
    return document.body.outerHTML
}
console.log(getText());             //Gives you all the text on the page
console.log(getHTML());             //Gives you the whole HTML of the page

Added

所以你希望内容脚本返回text到弹出窗口。您可以使用:

  • chrome.tabs.getSelected要选择选项卡,
  • chrome.tabs.sendRequest将请求发送到内容脚本,
  • and chrome.extension.onRequest.addListener听取请求。

弹出页面

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {method: "getText"}, function(response) {
        if(response.method=="getText"){
            alltext = response.data;
        }
    });
});

内容脚本

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {
        if(request.method == "getText"){
            sendResponse({data: document.all[0].innerText, method: "getText"}); //same as innerText
        }
    }
);

这应该有效。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Chrome 扩展 - 获取当前选项卡的全部文本内容 的相关文章