扩展程序中的JavaScript无效

时间:2017-01-24 20:17:23

标签: javascript jquery google-chrome-extension

我正在尝试制作阻止iframe的Chrome扩展程序。我有一个content.js文件,其中包含javascript代码但不执行。 这是我的manifest.json:

{
"manifest_version":2,
"name":"Ad Killer",
"description":"A Basic program for blocking ads",
"version":"0.1",
"background":{
   "scripts":[
     "background.js"
   ]
},
"content_scripts":[
   {
      "matches":[
         "<all_urls>"
      ],
      "js":[
         "jquery.js"
      ]
   }
],
"browser_action":{
   "default_icon":"ad128.png",
   "default_title":"Ad Killer"
 }
}

Cotent.js:

var elems = document.getElementsByTagName("iframe");

for (var i = 0, max = elems.length; i < max; i++) {
    elems[i].hidden = true;

我的问题是,有没有办法让content.js中的javascript工作?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您的清单目前正在为您访问的每个页面添加jquery.js。您只需要将content.js添加到“content_scripts”数组中。假设content.js与manifest.json位于同一位置:

"content_scripts":[
   {
      "matches":[
         "<all_urls>"
      ],
      "js":[
         "jquery.js",
         "content.js"
      ]
   }
],

此外,您还需要确保在DOM准备就绪时代码运行。因为你正在使用jQuery:

$(document).ready(function() {
  //your code here
})

清单有一些选项可以定义脚本运行的时间,但我从未在这些选项上取得太大成功,您可以在此处进行探索:https://developer.chrome.com/extensions/content_scripts请参阅run_at属性。

您甚至可能希望设置超时或轮询来查询iframe,因为其中一些可能是异步创建的,也就是说,在加载广告内容之后。