请不要将此标记为重复,因为我的问题不同。我正在尝试制作阻止广告的Chrome扩展程序。但它似乎没有做任何事情。 这是我的代码:
的manifest.json
{
"manifest_version": 2,
"name": "Ad Killer",
"description": "A Basic ad remover",
"version": "1.0",
"browser_action": {
"default_icon": "ad128.png",
"default_popup": "popup.html"
},
"permissions": [
"activeTab",
"https://ajax.googleapis.com/"
]
}
这是我的popup.html:
<html>
<body>
<script type="text/javascript">
var elems = document.getElementsByTagName("iframe");
for(var i = 0, max = elems.length; i < max; i++) {
elems[i].hidden=true;
}
</script>
<h1> Ads Killed </h1>
</body>
</html>
问题在于它显示了被杀的广告&#39;消息但没有做任何事情。我的问题是,有什么方法可以让它发挥作用?我对javascript的经验很少,任何帮助都将非常感激。
答案 0 :(得分:2)
您的脚本仅在popup.html
内运行,这是单击扩展程序图标时弹出窗口中显示的内容。它无权访问浏览器选项卡中的页面。
如果您希望此脚本在浏览器标签页面上运行,则需要创建content script,并将其注入每个标签页。
如果要在弹出窗口和选项卡中的内容脚本之间进行通信,则需要使用message passing在所有不同页面之间发送消息。然后,每个页面将侦听这些消息,并使用类似于事件处理程序的语法进行相应的反应。
分配内容脚本是从manifest.json
文件完成的。为了限制哪些站点将内容脚本应用于它们,您必须提供一组URL匹配模式。然后,您可以提供应用于该页面的javascript或css文件。
例如,如果您想将一些javascript应用于所有公共网页,您可能会执行以下操作:
"content_scripts": [
{
"matches": ["http://*", "https://*"],
"js": ["myscript.js"]
}
],