1

我想根据数组中的 URL 创建新选项卡,但是在此过程中,我需要脚本等待新选项卡中的页面首先加载或等待几秒钟,然后关闭选项卡并在第一个关闭。

目前,此代码将一次创建所有新选项卡,然后close.js脚本将在几秒钟后关闭选项卡。因此,如果我的数组中有 50 个 URL,将同时创建 50 个新选项卡,这很糟糕。我需要一次创建和关闭一个选项卡,而不是一次全部关闭。

我曾尝试使用chrome.tabs.querystatus 参数来解决此问题,但此 status 参数似乎只与选项卡加载状态相关,而不与页面状态相关。

有人有什么想法吗?

var jsonObject = xhr.responseText;  
var obj = jQuery.parseJSON(jsonObject);
for (var i = 0; i < obj.url.length; i++) {
    chrome.tabs.create({"url":obj.url[i],"selected":false},function(tab){
        var createdTabId = tab.id;
        chrome.tabs.executeScript(createdTabId, {file: "js/close.js"});
    }); 
}
4

1 回答 1

1

找到了解决方案:

var jsonObject = xhr.responseText;  
var obj = jQuery.parseJSON(jsonObject);
var timeout = 0;
var urlcount = 0;       

for (var i = 0; i < obj.url.length; i++) {
    setTimeout(function(){
        chrome.tabs.create({"url":obj.url[urlcount],"selected":false},function(tab){
        var createdTabId = tab.id;
        chrome.tabs.executeScript(createdTabId, {file: "js/close.js"});
        }); 
        urlcount++;
    },timeout);  // put the timeout here
    timeout = timeout + 2000;
}
于 2012-08-12T02:55:20.740 回答