Chrome Extension: webRequest Redirect to Existing Tab, Without Opening New Tab

走远了吗. 提交于 2019-12-04 16:35:49

I eventually sorted it out. Here's an approximation of the code:

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'}]}
);
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!