我唯一想到的是使用chrome.tabs.discard
,下面是我当前的代码:
var test_button= document.getElementById('test_button');
test_button.onclick = function(element) {
var to_load = {"url": "https://stackoverflow.com", "active": false, "selected": false};
chrome.tabs.create(to_load, function(tab) {
chrome.tabs.discard(tab.id);
});
};
但是,不是阻止此页面加载,而是在加载之前调用chrome.tabs.discard
会导致Chrome将其替换为about:blank
。
我发现的唯一“解决方案”是等待选项卡加载,但是在卸载之前等待它达到目的,特别是如果我一次打开大量选项卡时。 p>
任何帮助将不胜感激。
答案 0 :(得分:0)
解决方案是仅在URL值更新后才在标签上调用chrome.tabs.discard
,例如:
var tabs_to_unload = {}
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, changedTab) {
if (tabs_to_unload[tabId] == true) {
// We can only discard the tab once its URL is updated, otherwise it's replaced with about:empty
if(changeInfo.url) {
chrome.tabs.discard(tabId);
delete tabs_to_unload[tabId];
}
}
});
var test_button= document.getElementById('test_button');
test_button.onclick = function(element) {
var to_load = {"url": "https://stackoverflow.com", "active": false, "selected": false};
chrome.tabs.create(to_load, function(tab) {
tabs_to_unload[tab.id] = true;
});
};
在我的情况下,确切的代码有点不同,因为我是在弹出窗口中执行这些操作的,并且其脚本注册的变量和侦听器的生存时间与弹出窗口一样长,但是其背后的原理是一样。