removeChild在chrome扩展中不起作用

时间:2016-09-23 22:00:09

标签: javascript google-chrome removechild

我尝试删除所有链接元素,其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();

1 个答案:

答案 0 :(得分:0)

首先,将查询更改为var styles = document.querySelectorAll ("link[rel='stylesheet']") - 这将消除不必要的if-block。其次,你确定在调用init()时加载了DOM吗?为此,不要直接调用init,而是尝试添加以下行:document.addEventListener ("DOMContentLoaded", init); - 一旦DOM可用,这将调用init。据我所知,这也可以在清单文件中完成,但我不知道默认是什么。