8

我有一点 javascript 打算打开两个或多个选项卡。这在 FF 和 IE 中运行良好,但 chrome 在新窗口而不是选项卡中打开第二个。它不依赖于 url,因为我已经使用两个相同的 url 进行了尝试。第一个在选项卡中打开,第二个在新窗口中打开。

这是我的代码片段:

for(var i=0 ; i<sites.length ;i++)
{
    window.open(sites[i].Url);
}
4

2 回答 2

12

只有用户生成的操作,Chrome 才会在新标签页中自动打开一个 URL,每个用户操作限制为一个标签页。在任何其他情况下,URL 将在新窗口中打开(顺便说一句,Chrome 默认会阻止该窗口)。
window.open必须在由用户操作(例如 onclick)触发的回调中调用,以便在新选项卡而不是窗口中打开页面。

在您的示例中,您尝试在用户操作时打开 N 个选项卡。但只有第一个在新选项卡中打开(因为它是用户生成的操作)。之后,任何其他 URL 都将在新窗口中打开。

类似的问题:force window.open() to create new tab in chrome (见 maclema 的回答)

于 2013-05-26T09:04:25.613 回答
0

我遇到了这个问题 JavaScript 中的 (function() { } )() 构造是什么?它给出了关于 IIFE 的解释。我觉得这个可以用完了。请耐心等待我对javascript没有深入的了解。但我尝试如下及其工作。

var sites = [{"url" : "http://www.google.com"} , {"url" : "http://www.yahoo.com"} , {"url" : "http://www.msn.com"}];
console.log(sites);
for( var i=0 ; i < sites.length ;i++) {
    (function(i) {
        console.log(i);
        window.open(sites[i].url , "_blank");
    })(i);
}   

它会在 chrome 的新标签页中打开 url。

于 2018-01-08T11:32:01.180 回答