2012-08-11 86 views
1

我想根據數組中的URL創建新標籤,但是在這個過程中,我需要腳本等待新標籤中的頁面先載入或等待幾秒鐘後關閉該選項卡並在第一個關閉後創建一個新選項卡。基於數組內容打開和關閉標籤,延遲

目前此代碼將一次創建新標籤,然後close.js腳本將在幾秒鐘後關閉標籤。因此,如果我的數組中有50個網址,則會一次創建50個新的標籤,這很糟糕。我需要一次創建並關閉一個標籤,而不是一次全部關閉。

我曾嘗試使用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"}); 
    }); 
} 
+0

使用一個堆棧或遞歸。 – 2012-08-11 14:21:47

+0

修改標題;請。 – SiB 2012-08-11 14:25:44

回答

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