基于延迟的数组内容打开和关闭选项卡

时间:2012-08-11 14:15:27

标签: tabs google-chrome-extension

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

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

我尝试使用chrome.tabs.query状态参数来解决此问题,但此状态参数似乎仅与选项卡加载状态有关,而与页面状态无关。

任何人都有一些想法?

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"});
    }); 
}

1 个答案:

答案 0 :(得分: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;
}