2017-02-11 59 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