我正在尝试使用Chrome扩展程序从youtube.com删除元素。内容脚本的运行(它可以将数据记录到控制台),但不删除元素。但是,如果我将内容脚本的代码复制到开发人员模式控制台中,它将按预期更改页面。尝试使用内容脚本在其他站点上更改DOM时不会发生此问题。修改页面中的其他元素(例如删除整个正文)是可行的。 我使用的setTimeout,以确保在页面加载。 (我知道有更好的方法,但是我想快速模拟一下问题)
elem = document.getElementById("items")
elem.parentNode.removeChild(elem)
这两行删除了推荐的视频,但仅在粘贴到控制台时删除。
清单文件:
{
"manifest_version": 2,
"name": "Test",
"version": "1.0",
"permissions": ["tabs","storage","declarativeContent","*://*.youtube.com/*"],
"content_scripts": [
{
"matches": ["*://*.youtube.com/*"],
"js": ["youtubeDomChange.js"]
}
],
}
youtubeDomChange.js:
setTimeout(function(){
console.log("ran")
elem = document.getElementById("items")
elem.parentNode.removeChild(elem)
},6000);
修改1: console.log(element.parentNode)
并从内容脚本返回不同的输出,并手动将代码粘贴到控制台。没有错误。
Console output