Chrome 扩展 - 获取当前选项卡的全部文本内容
我正在开发一个扩展,我需要获取当前选项卡上的整个文本内容。现在我有一个插件可以从当前选项卡中检索选定的文本。所以,本质上我正在寻找它的 ctrl-A 版本:)。这就是我到目前为止根据@Derek 的提示所做的事情。
这是在我的事件处理程序中(这只是一个,还有其他侦听器用于 onUpdated
等):
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
中当前选项卡的完整文本。有人可以帮我解决这个问题吗?
谢谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
document.body.innerText
或document.all[0].innerText
在 内容脚本。它将获取页面中的所有文本内容,无需任何 HTML 代码。
或者您可以使用
document.all[0].outerHTML
获取整个页面的 HTML。示例
在内容脚本中
添加
因此您希望内容脚本将文本返回到弹出窗口。您可以使用:
chrome.tabs.getSelected
来选择选项卡,chrome.tabs.sendRequest
将请求发送到内容脚本,chrome.extension。 onRequest.addListener
监听请求。弹出页面
内容脚本
这应该可行。
You can use
document.body.innerText
ordocument.all[0].innerText
to do it in the content script.It will get all the text content in the page, without any HTML code.
Or you can use
document.all[0].outerHTML
to get the HTML of the whole page.Example
In the Content Script
Added
So you want the content script to return the text to the popup. You can use:
chrome.tabs.getSelected
to get the tab selected,chrome.tabs.sendRequest
to send request to the content script,chrome.extension.onRequest.addListener
to listen to requests.Popup page
Content Script
This should work.
使用
executeScript
:(需要权限activeTab
)如果
代码
很复杂,可以在内容脚本中定义一个函数并在代码
中调用该函数(或使用文件
)。Use
executeScript
: (requires permissionactiveTab
)In case the
code
is complex, it's possible to define a function in the content script and call that function in thecode
(or usefile
).