我在内容脚本中使用XMLHttpRequest
。只要新选项卡打开,代码就会起作用,但只要更新选项卡,它就会停止工作。 tabupdation API仅适用于后台。
清单:
{
"manifest_version": 2,
"name": "extension",
"version": "1.0",
"description": "",
"icons" : {
"48" : "48X48.png",
"128": "icon1.png"
},
"background": {
"scripts": ["background.js"],
"persistent": true
},
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content.js"],
"all_frames": true
}]
}
内容脚本使用XMLHttpRequest
。
var string =“网页上的字符串”;
xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
alert(xmlhttp.responseText);
}
}
xmlhttp.open("GET","url/folderName/file.php?q=string",true,"userName","password");
xmlhttp.send();
字符串实际上是我从网页检索并在xHR中发送的值,但是当标签网址更改时,显示之前的值而不是新值。 每当我在当前标签中打开网址时此代码都不起作用,例如正如我们在youtube中所做的那样,打开视频建议但如果我们在新标签中打开任何视频,那么内容脚本工作/如果我们重新加载该标签然后内容脚本工作。
答案 0 :(得分:1)
您可能误解了 chrome.tabs.onUpdated
事件的概念。当标签网页的内容更新时,它不会触发,但是当 tab's properties 更新时(例如,当您重新加载标签时,{ {1}}属性已更新)。
点击将不同视频加载到当前网页(例如,通过AJAX)的链接不会触发 onUpdated
事件。
如果您想收听网页本身的更改,请查看 MutationObserver 。
有关在Chrome扩展程序中使用 MutationObserver 的一些示例,您可以查看 here 和 there 强>