我正在开发一个扩展,我需要获取当前选项卡上的整个文本内容。现在我有一个插件可以从当前选项卡中检索选定的文本。所以,本质上我正在寻找它的 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(使用前将#替换为@)