1

配列内の URL に基づいて新しいタブを作成したいのですが、その過程で、新しいタブのページが最初に読み込まれるのを待つか、数秒待ってからタブを閉じて新しいタブを作成するスクリプトが必要です。最初のものは閉じます。

現在、このコードは新しいタブを一度に作成し、close.jsスクリプトは数秒後にタブを閉じます。したがって、配列に 50 個の URL がある場合、50 個の新しいタブが一度に作成されます。これは悪いことです。タブを一度に 1 つずつ作成して閉じる必要があります。

status パラメーターを使用してこの問題を解決しようとしましたchrome.tabs.queryが、この 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 に答える