如何为阻止特定网站的Chrome扩展程序编写js

时间:2014-03-05 12:08:29

标签: javascript google-chrome-extension

我花了几个小时试图自己解决这个问题,分析了一堆其他人的工作(这是我试图破解的最新工作Block URL with a specific word somewhere in the subdomain),而且没有聪明。

我觉得js不应该那么复杂,我只是试图阻止一个网页并在其位置显示错误信息。

这是我在网上发布的地方:

chrome.declarativeWebRequest.onRequest.addRules({
  id: 'some rule id',
  conditions: [
    new chrome.declarativeWebRequest.RequestMatcher({
      url: {
        host: 'www.dailymail.com'
      }
    })
  ],

  actions: [
    new chrome.declarativeWebRequest.CancelRequest()
  ]
});

1 个答案:

答案 0 :(得分:0)

Block URL with a specific word somewhere in the subdomain的答案按预期工作。如果它不起作用,请按照以下步骤解决问题:

  1. Open the background page's console并查找错误消息
    在Google上搜索错误消息,并尝试了解推荐的结果。值得信赖的来源包括Stack Overflowextension documentationChromium's bug trackerchromium-extensionschromium-apps邮件列表。

  2. 检查您是否已为manifest file添加了正确的权限。

  3. 如果您刚刚添加了新权限,请确保已重新加载扩展程序(例如,点击chrome://extensions/处的重新加载)。

  4. 根据您提供的信息,我可以想到失败的三个原因:

    1. 您使用的是Chromium betaChromium dev(甚至是金丝雀)吗?如果没有,请从其中一个频道安装Chrome,或使用webRequest API。 declarativeWebRequest API目前在稳定渠道上,仅在测试版和开发者渠道上提供。
    2. urlUrlFilter类型的对象。没有名为“host”的属性,如果要匹配确切的主机,请使用hostEquals,如下所示:

      url: {
          hostEquals: 'www.dailymail.com'
      }
      
    3. 您尚未添加正确的权限。要使您的演示工作,您需要在清单文件中声明declarativeWebRequest*://www.dailymail.com/*权限。