Javascript 使用chrome.windows.create和chrome.tabs.create在incognito中打开多个链接

Javascript 使用chrome.windows.create和chrome.tabs.create在incognito中打开多个链接,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在为自己做一个chrome扩展,我想在隐姓埋名中为我的网站打开多个新会话的标签 当调用该函数时,它应该打开一个新的incognito窗口,并在那里打开4-5个选项卡,但当前链接在已单击chrome扩展按钮的窗口中打开 当前代码: chrome.windows.create({focused: true, incognito: true }, function(win) { for (var i = 0; i < links.length; i++) {

我正在为自己做一个chrome扩展,我想在隐姓埋名中为我的网站打开多个新会话的标签

当调用该函数时,它应该打开一个新的incognito窗口,并在那里打开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
            })
          }
    });
chrome.windows.create({focused:true,incognito:true},函数(win){
对于(变量i=0;i

我应该做些什么来打开incognito窗口中的新选项卡?

显然,回调是在窗口关闭之后但在关闭之前调用的

在选项中明确指定新窗口id:

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

显然,回调是在窗口关闭之后但在关闭之前调用的

在选项中明确指定新窗口id:

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

我还想在新创建的匿名窗口中打开几个选项卡。使用从创建窗口收到的对象打开选项卡

        chrome.windows.create({
            url: splashNodes[0].url,
            incognito: true,
        }, w => {
            console.log({w});
            for (let i = 1; i < splashNodes.length; i++) {
                chrome.tabs.create({
                    url: splashNodes[i].url,
                    windowId: w.id
                });
            }
        })
chrome.windows.create({
url:splashNodes[0]。url,
隐姓埋名:是的,
},w=>{
console.log({w});
for(设i=1;i
创建为incognito的窗口在回调中没有返回任何内容。chrome.windows.onCreated也没有启动。按照某人的建议将权限{“incognito”:“split”}添加到清单中没有帮助


解决我问题的方法是,用户向我的扩展(扩展管理器,详细信息)授予匿名权限,如上所述。

我还想在新创建的匿名窗口中打开几个选项卡。使用从创建窗口收到的对象打开选项卡

        chrome.windows.create({
            url: splashNodes[0].url,
            incognito: true,
        }, w => {
            console.log({w});
            for (let i = 1; i < splashNodes.length; i++) {
                chrome.tabs.create({
                    url: splashNodes[i].url,
                    windowId: w.id
                });
            }
        })
chrome.windows.create({
url:splashNodes[0]。url,
隐姓埋名:是的,
},w=>{
console.log({w});
for(设i=1;i
创建为incognito的窗口在回调中没有返回任何内容。chrome.windows.onCreated也没有启动。按照某人的建议将权限{“incognito”:“split”}添加到清单中没有帮助


解决我问题的方法是,当用户向我的扩展(扩展管理器,详细信息)授予匿名权限时,如上所述。

@wOxxOm工作得很好,你能将此作为答案发布,以便我可以接受吗?@wOxxOm工作得很好,你能将此作为答案发布,以便我可以接受吗?实际上,
windows.create()
回调在
windows
事件之后调用。顺序是:
windows.onCreated
事件,然后是多个
选项卡
事件,然后是
windows.onFocusChanged
激发(有时两次),然后是
windows.create()
回调。但是,对于许多进一步的操作,您需要延迟/等待进一步的事件(例如,一对/多几个
选项卡。onUpdated
然后是
选项卡。onUpdated
状态为“完成”
)。在启动
windows.create()
回调后,没有其他
windows
事件。但是,这不是问题所在。在这种情况下,根据设计,新窗口未设置为(即,
tabs.create()
在未指定windowId时创建选项卡的窗口)。因此,问题不是“当前窗口”尚未更改,而是它的设计使得打开新窗口不会更改当前运行代码的“当前窗口”。请随意在您的答案中添加此信息或类似信息。我将首先重新检查源代码,因为粘性当前窗口的想法对我来说似乎是一个糟糕的API设计选择。实际上,
windows.create()
回调是在
windows
事件之后调用的。顺序是:
windows.onCreated
事件,然后是多个
选项卡
事件,然后是
windows.onFocusChanged
激发(有时两次),然后是
windows.create()
回调。但是,对于许多进一步的操作,您需要延迟/等待进一步的事件(例如,一对/多几个
选项卡。onUpdated
然后是
选项卡。onUpdated
状态为“完成”
)。在启动
windows.create()
回调后,没有其他
windows
事件。但是,这不是问题所在。在这种情况下,根据设计,新窗口未设置为(即,
tabs.create()
在未指定windowId时创建选项卡的窗口)。因此,问题不是“当前窗口”尚未更改,而是它的设计使得打开新窗口不会更改当前运行代码的“当前窗口”。请随意在您的答案中添加此信息或类似信息。我将首先重新检查源代码,因为粘性当前窗口的想法对我来说似乎是一个糟糕的API设计选择。