Javascript Chrome扩展,用于检查链接并重定向到其他网站

Javascript Chrome扩展,用于检查链接并重定向到其他网站,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在构建一个扩展,我想在其中阻止chrome/firefox浏览器中的一些网站URL 假设我有一个URL列表,我想把它列为黑名单。 因此,每当chrome用户想要加入他们时,扩展将重定向到我选择的另一个URL(在代码中,我将确定我希望它是哪个URL) 通过一些研究,我成功地制作了这个 manifest.json background.js 所以这个扩展非常适合我要做的事情。 但现在我有一些问题 问题: 假设我希望扩展重定向到2个不同的URL (不仅仅是像我上面的例子那样出现在google.co

我正在构建一个扩展,我想在其中阻止chrome/firefox浏览器中的一些网站URL

假设我有一个URL列表,我想把它列为黑名单。 因此,每当chrome用户想要加入他们时,扩展将重定向到我选择的另一个URL(在代码中,我将确定我希望它是哪个URL)

通过一些研究,我成功地制作了这个

manifest.json

background.js

所以这个扩展非常适合我要做的事情。 但现在我有一些问题

问题:

假设我希望扩展重定向到2个不同的URL (不仅仅是像我上面的例子那样出现在google.com上。)
[这意味着,当我输入URL:www.facebook.com并按enter键时,扩展会将特定选项卡重定向到www.google.com,并打开一个新选项卡重定向到www.abc.com]

我不知道如何在chrome中执行此操作,但在firefox中,您可以这样做:


在该解决方案中,您可以在此处阅读有关重定向的内容:

您既可以重定向选项卡,也可以打开一个新选项卡,这似乎是您试图实现的

就这么简单(在
onBeforeRequest
侦听器中):

但是,您可能不希望每次访问URL时都打开一个新选项卡。请注意您的
类型
声明:

types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
这意味着每次任何页面试图从这些站点加载资源时,都会弹出一个新选项卡。因此,最好按类型进行筛选:

function(details) {
  if(details.type == "main_frame") {
    chrome.tabs.create({
      url: "your 2nd URL",
      active: true
    });
  }
  return {redirectUrl: "your 1st URL" };
}

我要阻止的URL放在哪里?@KwnstantinosNatsios在我链接到的解决方案中,您必须测试
httpChannel.URI.spec
查看另一个非常类似的示例:是的,请为firefox单独提出一个问题,突出显示您的实际问题。看见您已经很好地解决了这个问题,但需要一点推动才能清楚地回答。我将第二个代码放在
onBeforeRequest
侦听器中,替换您提到的URL,但我有一些问题1)它打开了一个新选项卡,但没有重定向到页面,但在这里的这个链接中[link](铬-extension://fkecblnphpabincjjhiognoobljgjpli/www.abc.com)当我尝试将abc.com添加到第二个url时。2)第一个选项卡正在加入我试图阻止的页面。
chrome.webRequest.onBeforeRequest.addListener(函数(细节){if(details.type==“main_frame”){chrome.tabs.create({url:“www.abc.com”,active:true};}返回{redirectUrl:“www.abc.com”};{URL:[“*://facebook.com/*”,“*://www.facebook.com/*”,“*://apple.com/*”,“*://www.apple.com/*”,“*://iptorrents.com/*”,“*://www.iptorrents.com/*”,类型:[“主框架”,“子框架”,“样式表”、“脚本”、“图像”、“对象”、“xmlhttprequest”、“其他”]}、[“阻塞”])
每当我试图转到黑名单URL时,我都想打开一个新选项卡。非常感谢你的回答!!一般来说,你应该为此类代码转储提出一个新问题。你需要为
www.abc.com
指定协议,使其成为完整的URL。如果你还有问题,请发布一个新的。我的问题与我的帖子相同。因为你发的邮件对我不起作用,对你起作用吗?这就是我对你答案的全部要求
function(details) {
  chrome.tabs.create({
    url: "your 2nd URL",
    active: true // Change to false if you want it to open in the background
                 // and see the docs for more options
  });
  return {redirectUrl: "your 1st URL" };
}
types: ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "xmlhttprequest", "other"]
function(details) {
  if(details.type == "main_frame") {
    chrome.tabs.create({
      url: "your 2nd URL",
      active: true
    });
  }
  return {redirectUrl: "your 1st URL" };
}