私はのウェブサイトからnode.removeChild
を使用してすべてのリンク要素のrelタグを "stylesheet"で削除しようとしていますが、機能しません。 セキュリティ上の理由からクロムエクステンションにいくつかの制限があることは知っていますが、この問題がこれらの制限によって引き起こされているかどうかはわかりません。removeChildがクロム拡張子で動作していません
ログに「styles[i].parentElement
」と入力すると、ボディエレメントが正しく機能するようになります。
ご協力いただければ幸いです。
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();
私はそれを考えなかったので、querySelectorAllを使用することを指摘してくれてありがとう。また、私はDOMContentLoadedでinitを実行しようとしましたが、それは問題を解決しませんでした。それを解決したのは、あなたが提案したマニフェストの "run_at": "document_end"を使用しています。 Googleによると_ _ "document_end"の場合、ファイルはDOMが完成した直後ではなく、画像やフレームなどのサブリソースが読み込まれる前に挿入されます。 "_ [Chromeコンテンツスクリプトリファレンス](https:// developer。 chrome.com/extensions/content_scripts)これですべてが意図どおりに機能します。助けてくれてありがとう@NikxDa! –