在阻止之前检查URL

时间:2016-02-06 13:26:10

标签: javascript api google-chrome google-chrome-extension

我目前使用以下代码来阻止特定的网址。它工作正常,但现在我想针对某些特定网址执行某些操作阻止在Chrome处理cilent请求之前。

chrome.webRequest.onBeforeRequest.addListener(function(d){
  return {cancel:true};
},{urls:["https://somesite.com/account/*",
         "http://evilsite.com"   
         ]},
  ["blocking"]); 

说,例如,我想获取用户使用插件访问的每个网址的网址。(这里只是一个简单的案例...当然我在这里排除被阻止的网站)

chrome.webRequest.onBeforeRequest.addListener(function(d){
      console.log(d.url); // doesn't work
      return {cancel:true};
    },{urls:["https://somesite.com/account/*",
             "http://evilsite.com"   
             ]},
      ["blocking"]); 

1 个答案:

答案 0 :(得分:1)

您需要删除过滤器(或者更确切地说,使其全包)并有条件地阻止:

chrome.webRequest.onBeforeRequest.addListener(
  function(d){
    console.log(d.url);
    if(d.url.indexOf('https://somesite.com/account/') >= 0) {
      return {cancel:true};
    }
  },
  { urls:["<all_urls>"] },
  ["blocking"]
);

或者,您可以拥有两个侦听器,一个基于模式阻止,另一个执行其他操作。如果您的其他操作没有阻止,那么性能可能会更好。

您需要清单中的"<all_urls>"权限。