我尝试删除所有链接元素,其rel标记为" stylesheet"使用网页中的node.removeChild
但不起作用。
我知道Chrome扩展程序出于安全原因有一些限制,但我似乎无法发现这个问题是否是由这些限制引起的。
如果我记录styles[i].parentElement
,它会向我提供body元素,以便正常工作。
非常感谢任何帮助。
的manifest.json:
{
"manifest_version": 2,
"name": "Leho Styler",
"description": "This extension gives leho a whole new styling to better please the eye.",
"version": "0.1.0",
"content_scripts": [
{
"matches": [
"https://leho.howest.be/*",
"https://leho.howest.be/*/*",
"http://leho.howest.be/*",
"http://leho.howest.be/*/*"
],
"css": [
"reset.css",
"leho.css"
],
"js": ["leho.js"]
}
]
}
leho.js (内容脚本)
var styles = document.getElementsByTagName('link');
function init() {
for (var i = 0; i < styles.length; i++) {
if (styles[i].rel == "stylesheet") {
styles[i].parentElement.removeChild(styles[i]);
}
}
}
init();
答案 0 :(得分:0)
首先,将查询更改为var styles = document.querySelectorAll ("link[rel='stylesheet']")
- 这将消除不必要的if-block。其次,你确定在调用init()时加载了DOM吗?为此,不要直接调用init,而是尝试添加以下行:document.addEventListener ("DOMContentLoaded", init);
- 一旦DOM可用,这将调用init。据我所知,这也可以在清单文件中完成,但我不知道默认是什么。