gpt4 book ai didi

javascript - Chrome 扩展 : webRequest Redirect to Existing Tab, 无需打开新标签

转载 作者:行者123 更新时间:2023-11-30 05:32:08 27 4
gpt4 key购买 nike

当用户打开某个页面时,我想在打开新选项卡之前在现有选项卡中打开该页面。我试过 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'}]}
);

关于javascript - Chrome 扩展 : webRequest Redirect to Existing Tab, 无需打开新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26238516/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com