我在内容脚本中使用XMLHttpRequest
。每当打开新选项卡时,该代码都会工作,但每当更新选项卡时,该代码就会停止工作。 tabupdation API 仅在后台工作。
list :
{
"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 中发送的值,但是当选项卡 url 更改时,将显示以前的值而不是新值。 每当我在当前选项卡中打开网址时,此代码都不起作用,例如正如我们在 YouTube 中所做的那样,打开侧面建议的视频,但如果我们在新选项卡中打开任何视频,则内容脚本可以工作/如果我们重新加载该选项卡,则内容脚本可以工作。
最佳答案
您可能误解了 chrome.tabs.onUpdated
的概念 事件。当选项卡网页的内容更新时,它不会触发,但是当tab's properties更新时,它不会触发。 已更新(例如,当您重新加载选项卡时,url
属性已更新)。
点击将不同视频加载到当前网页的链接(例如通过 AJAX)不会触发 onUpdated
事件。
如果您想监听网页本身的变化,您应该查看 MutationObserver 。
有关使用 MutationObserver 的一些示例 在 Chrome 扩展程序中,您可以查看 here 和 there 。
关于javascript - 内容脚本在 Chrome 扩展中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20379473/