background.js
var htmlcontent = null;
chrome.tabs.onUpdated.addListener(function() {
onWindowLoad();
alert(htmlcontent);
});
chrome.tabs.onHighlighted.addListener(function(){
onWindowLoad();
alert(htmlcontent);
});
function onWindowLoad() {
chrome.tabs.executeScript(null, {
file: "getPagesSource.js"
}, function() {
if (chrome.extension.lastError) {
htmlcontent = 'There was an error injecting script : \n' + chrome.extension.lastError.message;
}
});
}
chrome.extension.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
htmlcontent = request.source;
}
});
getPagesSource.js
function DOMtoString(document_root) {
return document.body.innerText ;
}
chrome.extension.sendMessage({
action: "getSource",
source: DOMtoString(document)
});
我正在开发chrome扩展程序。我可以在重新加载时获取当前窗口的正文内容,但是当我更改标签时却无法获取内容。前一个标签的内容将被保存。我使用了错误的API吗?或当我在Chrome中更改标签时,如何触发onUpdate功能?
终于找到了。
我正在chrome.tabs.onHighlighted.addListener(function()中打印html内容。那一刻,我仍然没有值。
htmlcontent值将仅在chrome.extension.onMessage.addListener(function()处设置)。
因此,如果您尝试打印htmlcontent,您仍将拥有上一个选项卡的内容。
所以流程是
chrome.tabs.onUpdated.addListener(function() {
onWindowLoad();
});
function onWindowLoad() {
chrome.tabs.executeScript(null, {
file: "getPagesSource.js"
}, function() {
if (chrome.extension.lastError) {
htmlcontent = 'There was an error injecting script : \n' + chrome.extension.lastError.message;
}
});
}
chrome.extension.onMessage.addListener(function(request, sender) {
if (request.action == "getSource") {
htmlcontent = request.source;
//call whatever function from here on so that htmlcontent will have the selected tab's content.
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句