我目前使用以下代码来阻止特定的网址。它工作正常,但现在我想针对某些特定网址执行某些操作不阻止在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"]);
答案 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>"
权限。