Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.chrome选项卡/窗口中的打开行为_Javascript_Google Chrome_Window.open - Fatal编程技术网

Javascript window.chrome选项卡/窗口中的打开行为

Javascript window.chrome选项卡/窗口中的打开行为,javascript,google-chrome,window.open,Javascript,Google Chrome,Window.open,我有一点javascript,可以打开两个或多个选项卡。这在FF和IE中运行良好,但chrome会在新窗口中打开第二个窗口,而不是tab。它不依赖于url,因为我已经用两个相同的url尝试过了。第一个在选项卡中打开,第二个在新窗口中打开 以下是我的代码片段: for(var i=0 ; i<sites.length ;i++) { window.open(sites[i].Url); } for(var i=0;iChrome仅在用户生成的操作中自动在新选项卡中打开URL,每个用

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

以下是我的代码片段:

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

for(var i=0;iChrome仅在用户生成的操作中自动在新选项卡中打开URL,每个用户操作仅限于一个选项卡。在任何其他情况下,URL将在新窗口中打开(顺便说一句,Chrome默认阻止该窗口)。
必须在由用户操作(例如onclick)触发的回调中调用window.open,页面才能在新选项卡而不是窗口中打开

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


类似的问题:(见麦克莱玛的回答)

我遇到了这个问题 这就解释了iLife。我认为这可以被重复使用。请耐心听我说,我对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);
}   
var sites=[{“url”:http://www.google.com},{“url”:http://www.yahoo.com},{“url”:http://www.msn.com"}];
控制台日志(站点);
对于(变量i=0;i

它会在chrome的新选项卡中打开url。

你能更清楚一点吗?我不明白你的意思question@LightStyle他的代码在Chrome中打开了新窗口,而不是新的标签。这是一个更容易理解的测试页面:(确保该站点上允许弹出窗口)谢谢,我担心会是这样。我确实向谷歌报告了一个bug,因为我觉得函数应该行为一致,而不是在第二次调用时改变行为。除此之外,其他浏览器只是打开选项卡。我相信这是出于设计,因为新的窗口有阻止机制,而新的选项卡没有。这是一样的y与警报一样。如果您有多个连续警报(在同一范围/上下文中)-第一个警报将正常显示,并且以下所有警报都将有一个“阻止进一步对话”复选框。我理解这些考虑因素,但坦率地说,如果它导致意外行为,我认为这是一个愚蠢的设计。我想知道调用函数的功能是什么,如果调用window.open会导致与另一个调用完全不同的结果,那么设计是错误的。此外,FF和IE都有弹出窗口拦截器,并实现它s正确。在Chrome版本49.0.2623.112中不起作用(至少不是bookmarklet):谷歌打开,雅虎被封锁。我在Chrome版本65.0.3325.181(官方版本)(64位)上试用过它是有效的。你必须启用弹出窗口,默认情况下是被阻止的。例如,在索引html中,如果你在chrome中打开索引html时包含了启用弹出窗口所需的代码。你需要在为研究启用弹出窗口后重新加载页面。同时,我减少了我的bookmarklet,以收集链接并将其写入我的n一个文本区。从那里我将它们复制到Chrome扩展名“批量URL开启器”,它为我完成其余的工作。如果有一天这个解决方案让我感到不安,我会再试一次。