javascript - 阻止前检查网址

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

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

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"]); 

最佳答案

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

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>" list 中的权限。

关于javascript - 阻止前检查网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35241549/

相关文章:

javascript - TheSixyOne.com 如何按比例将图像拉伸(stretch)到整页?

javascript - 从数组中获取学生姓名元素具有最高点值并在 jquery 中突出显示此名称

java - 是否可以在不调用 soot.Main.main(...) 的情况下使用 Soot 分析?

C# 和 Ghostscript 64 位

html - SVG 不从父级继承值

javascript - 在netbeans中使用node.js从mysql数据库添加值以选择表单

javascript - 如何将某些对象键分离到它们自己的数组中?

java - 对于这种情况,是单例,工厂还是其他更好的东西?

jquery - Chrome 中的事件监听器与 Jquery

javascript - Chrome 中 Canvas 图像上的 Three.js 安全错误