Google chrome extension 使用Chrome扩展阻止基于标题的网站

Google chrome extension 使用Chrome扩展阻止基于标题的网站,google-chrome-extension,Google Chrome Extension,我正在试验Chrome扩展,试图制作一个能够根据标题阻止和重定向网站的扩展。在本例中,当任何网页标题的值为“Microsoft-Official Home Page”时,我希望将其重定向到。下面的示例代码几乎可以正常工作,问题是我必须在第一次进入页面时刷新页面,否则它不会将我重定向到example.com。为什么它在第一次看到具有指定标题的页面时不重定向我,而我不必刷新它,我应该怎么做 background.js: //侦听要发生的更改。 chrome.tabs.onUpdate.addList

我正在试验Chrome扩展,试图制作一个能够根据标题阻止和重定向网站的扩展。在本例中,当任何网页标题的值为“Microsoft-Official Home Page”时,我希望将其重定向到。下面的示例代码几乎可以正常工作,问题是我必须在第一次进入页面时刷新页面,否则它不会将我重定向到example.com。为什么它在第一次看到具有指定标题的页面时不重定向我,而我不必刷新它,我应该怎么做

background.js:

//侦听要发生的更改。
chrome.tabs.onUpdate.addListener(函数(){
//获取所选选项卡中网页的URL和标题。
chrome.tabs.getSelected(函数(选项卡){
var currentUrl=tab.url;
var currentTitle=tab.title;
//测试页面标题是否等于给定字符串。
如果(currentTitle==“Microsoft-官方主页”){
chrome.webRequest.onBeforeRequest.addListener(
函数(){
返回{重定向URL:“https://example.com/"};
},
{URL:[currentUrl]},//阻止当前选项卡的URL。
[“封锁”]
);
}
}
}
manifest.json:

{
“名称”:“测试扩展”,
“版本”:“1.0”,
“说明”:“按标题划分的地块扩展。”,
“权限”:[
“标签”,
“tabCapture”,
“网络请求”,
“webRequestBlocking”,
""
],
“背景”:{
“脚本”:[“background.js”],
“持久”:正确
},
“清单版本”:2
}
问题:

  • 每次标题条件为true时,您的代码将在以前的所有侦听器之外注册一个新的webRequest侦听器
  • webRequest侦听器在后续导航中工作,而不是主动运行
  • chrome.tabs.getSelected已弃用,此处不需要
解决方案:

当选项卡的标题变为已知时,将使用包含新标题的
change
参数调用侦听器。如果标题已为已知-例如,当选项卡重新加载时-标题没有更改通知,但仅针对状态(例如,加载/完成),因此我们使用
tab.title

下面是正确的background.js:

chrome.tabs.onUpdate.addListener((tabId,change,tab)=>{
const title='title'正在更改?change.title:tab.title;
如果(标题=='Microsoft-官方主页'){
更新(tabId,{url:'https://example.com/'});
}
});
上述操作只需要manifest.json权限:

“权限”:[
“选项卡”
],