Javascript Chrome扩展:webRequest重定向到现有选项卡,而不打开新选项卡

Javascript Chrome扩展:webRequest重定向到现有选项卡,而不打开新选项卡,javascript,redirect,google-chrome-extension,tabs,google-chrome-devtools,Javascript,Redirect,Google Chrome Extension,Tabs,Google Chrome Devtools,当用户打开某个页面时,我希望在打开新选项卡之前,在现有选项卡中打开该页面。我尝试过webRequest: chrome.webRequest.onBeforeRequest.addListener( function(details) { chrome.tabs.query({ url: 'https://example.com/' },function (tabs) { chrome.tabs.update(tabs[0].id, { url:

当用户打开某个页面时,我希望在打开新选项卡之前,在现有选项卡中打开该页面。我尝试过webRequest:

chrome.webRequest.onBeforeRequest.addListener(
    function(details) {
        chrome.tabs.query({ url: 'https://example.com/' },function (tabs) {
            chrome.tabs.update(tabs[0].id, { url: details.url, highlighted: true });
        })
    },
    {urls: ['https://example.com/']},
    ['blocking']
);
我也尝试过webNavigation:

chrome.webNavigation.onBeforeNavigate.addListener(function (details) {
    if(details.url=="https://example.com/") {
        chrome.tabs.query({ url: 'https://example.com/' },function (tabs) {
            chrome.tabs.update(tabs[0].id, { url: details.url, highlighted: true });
        });
    }
});
这两个选项都会打开一个必须关闭的新选项卡,并导致浏览器在选项卡之间跳转

在打开新选项卡之前,有没有办法拦截请求


谢谢

我终于解决了。下面是代码的近似值:

function openMypageInMysite(tab) {
  var urlNavigatingTo = tab.url,
    matchMysiteUrl = urlNavigatingTo.match(/^https?:\/\/(.*).mysite.com\/?(.*)$/);

  if (matchMysiteUrl) {
    var pattern  = '*://' + matchMysiteUrl[1] + '.mysite.com/*';

    chrome.tabs.query({ url: pattern }, function(openTabs) {
      var route    = '/' + matchMysiteUrl[2];
      Mytab = (openTabs[0].id !== tab.id) ? openTabs[0].id : openTabs[1].id;

      chrome.tabs.sendMessage(Mytab, { route: route });
      chrome.tabs.update(Mytab, { active: true });
      chrome.tabs.remove(tab.id);
    });
  }
}

chrome.webNavigation.onBeforeNavigate.addListener(
  function (details) {
    openMypageInMysite({id: details.tabId, url: details.url});
  },
  {url: [{hostSuffix: 'mysite.com'}]}
);