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
触发后执行。因此,您的事件处理程序永远不会被触发。
正如 Xan 已经指出的那样,您的代码 运行 太晚了。
您的实际解决方案应该是:
1) 像这样将 "run_at": "document_end"
添加到您的清单中:
"content_scripts": [
{
"matches": ...,
"js": ...,
"run_at": "document_end"
}
]
2) 删除 document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);
并使用 fireContentLoadedEvent()
直接调用您的函数,或者将您的代码完全移出该函数。
我一直在寻找一种解决方案,可以在加载此网页后立即删除该网页的内容。
最简单的清单是:
{
"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
触发后执行。因此,您的事件处理程序永远不会被触发。
正如 Xan 已经指出的那样,您的代码 运行 太晚了。
您的实际解决方案应该是:
1) 像这样将 "run_at": "document_end"
添加到您的清单中:
"content_scripts": [
{
"matches": ...,
"js": ...,
"run_at": "document_end"
}
]
2) 删除 document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);
并使用 fireContentLoadedEvent()
直接调用您的函数,或者将您的代码完全移出该函数。