Chrome扩展程序不起作用

时间:2017-01-15 08:50:51

标签: javascript google-chrome

请不要将此标记为重复,因为我的问题不同。我正在尝试制作阻止广告的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的经验很少,任何帮助都将非常感激。

1 个答案:

答案 0 :(得分:2)

您的脚本仅在popup.html内运行,这是单击扩展程序图标时弹出窗口中显示的内容。它无权访问浏览器选项卡中的页面。

如果您希望此脚本在浏览器标签页面上运行,则需要创建content script,并将其注入每个标签页。

如果要在弹出窗口和选项卡中的内容脚本之间进行通信,则需要使用message passing在所有不同页面之间发送消息。然后,每个页面将侦听这些消息,并使用类似于事件处理程序的语法进行相应的反应。

分配内容脚本是从manifest.json文件完成的。为了限制哪些站点将内容脚本应用于它们,您必须提供一组URL匹配模式。然后,您可以提供应用于该页面的javascript或css文件。

例如,如果您想将一些javascript应用于所有公共网页,您可能会执行以下操作:

"content_scripts": [
  {
    "matches": ["http://*", "https://*"],
    "js": ["myscript.js"]
  }
],