javascript - 内容脚本在 Chrome 扩展中不起作用

标签 javascript google-chrome google-chrome-extension

我在内容脚本中使用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/

相关文章:

google-chrome - 适用于 Amazon Cloud 的 Chrome 扩展程序

javascript - 为什么 chrome.browserAction.onClicked 未定义?

php - 使用 javascript 访问元素样式属性时出现问题

javascript - 延迟加载图像 - noscript 后备代码

不同浏览器中的 CSS 悬停宽度样式

javascript - 简单的 Ajax uploader 插件停止工作

当用户点击按钮时Javascript设置输入值

javascript - 将自定义用户代理关联到特定的 Google Chrome 页面/标签

javascript - 多个、单个输入文件表单字段

javascript - 如何使用变量获取 localStorage 数组项的值?