内容脚本在chrome扩展中不起作用

时间:2013-12-04 15:34:51

标签: javascript google-chrome google-chrome-extension

我在内容脚本中使用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中所做的那样,打开视频建议但如果我们在新标签中打开任何视频,那么内容脚本工作/如果我们重新加载该标签然后内容脚本工作。

1 个答案:

答案 0 :(得分:1)

您可能误解了 chrome.tabs.onUpdated 事件的概念。当标签网页的内容更新时,它不会触发,但是当 tab's properties 更新时(例如,当您重新加载标签时,{ {1}}属性已更新)。

点击将不同视频加载到当前网页(例如,通过AJAX)的链接不会触发 onUpdated 事件。

如果您想收听网页本身的更改,请查看 MutationObserver
有关在Chrome扩展程序中使用 MutationObserver 的一些示例,您可以查看 here there