2017-02-11 499 views
0

我正在爲自己一款Chrome擴展程序,我想在改名爲我的網站的新會話打開多個標籤頁,打開多個鏈接與chrome.windows.create和chrome.tabs.create

當該函數被稱爲它應該打開一個新的隱身窗口並打開4-5個選項卡,但當前鏈接在已被點擊的Chrome擴展按鈕的窗口中打開。

當前代碼:

chrome.windows.create({focused: true, incognito: true }, function(win) { 
      for (var i = 0; i < links.length; i++) { 
      array = links[i].href; 
      chrome.tabs.create({ 
       url: array, 
       selected: true 
      }) 
      } 
    }); 

我應該改變,使其打開隱身窗口的新標籤?

+0

@wOxxOm完美的作品,你可以張貼這是一個答案,所以我能接受嗎? – Eli

回答

1

顯然回調是在窗口爲created之後,但是在focused之前調用的。

指定chrome.tabs.create選項明確新的窗口ID:

chrome.tabs.create({ 
    url: 'http://example.com', 
    windowId: win.id, 
}); 
+0

對不起,等待,多謝 – Eli

+0

實際上,'windows.create()'回調是在* windows事件之後調用的。順序是:'windows.onCreated'事件,然後多個'tabs'事件,然後'windows.onFocusChanged'觸發(有時兩次),然後是'windows.create()'回調。但是,對於許多進一步的操作,您需要延遲/等待進一步的事件(例如,更多的'tabs.onUpdated',然後''tabs.onUpdated''status''complete'')。在'windows.create()'回調被觸發後沒有額外的'windows'事件。 – Makyen

+0

但是,這不是問題。在這種情況下,新窗口在設計上並未設置爲[當前窗口](https://developer.chrome.com/extensions/windows#current-window)(即其中'tabs.create ()'當沒有指定windowId時創建標籤)。因此,問題不在於「當前窗口」尚未改變,而在於它的設計使得打開新窗口不會改變當前正在運行的代碼的「當前窗口」。隨意將這個或類似的信息添加到您的答案中。 – Makyen