chrome扩展页面修改onload

chrome extension page modification onload

我一直在寻找一种解决方案,可以在加载此网页后立即删除该网页的内容。

最简单的清单是:

{
  "manifest_version": 2,
  "name": "Remove WebPage",
  "description": "Remove WebPage",
  "version": "0.2",

  "content_scripts": [
    {
      "matches": ["http://www.webdomain.net/*"],
      "js": ["myscript.js"]
    }
  ],

  "permissions": [
    "tabs", 
    "http://*/", 
    "https://*/"
  ]
}

并且 myscript.js 文件是

document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);

function fireContentLoadedEvent () {
    document.body.textContent = "No data anymore";
}

看起来很简单,但行不通

您的脚本默认在 DOMContentLoaded 触发后执行。因此,您的事件处理程序永远不会被触发。

看看run_at parameter documentation

正如 Xan 已经指出的那样,您的代码 运行 太晚了。

您的实际解决方案应该是:

1) 像这样将 "run_at": "document_end" 添加到您的清单中:

"content_scripts": [
    {
        "matches": ...,
        "js": ...,
        "run_at": "document_end"
    }
]

2) 删除 document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false); 并使用 fireContentLoadedEvent() 直接调用您的函数,或者将您的代码完全移出该函数。