使用窗口.反复打开会产生意想不到的结果

Using window.open repeatedly produces unexpected result

本文关键字:意想不到 结果 窗口      更新时间:2023-09-26

我的浏览器允许任何网站显示弹出窗口(使用window.open)。

window.open("http://www.google.com/","_blank");

以上代码在新选项卡上打开google.com


然而,当我像这样反复使用window.open时:

window.open("http://www.google.com/","_blank");
window.open("http://www.facebook.com/","_blank");
window.open("http://www.example.com/","_blank");

现在,google.com在新选项卡上打开,facebook.comexample.com以弹出窗口打开。我想让这3个链接在新标签页中打开,但是我做不到。

我该如何解决这个问题?

我很惊讶第二个和第三个竟然被打开了。(Chrome上没有,它会屏蔽它们;但我确实看到了你描述的行为,如果我禁用拦截器。

您需要提供单独的UI元素(按钮等)来单独打开每个窗口,以便每个window.open调用由单独的最终用户操作触发,而不是响应单个用户操作打开几个窗口。希望这将为您提供每个窗口所需的行为。虽然你不能控制打开一个新窗口还是一个选项卡,但是现在大多数浏览器默认使用新选项卡(并且大多数用户都有一个选项来改变它),除非你给window.open提供第三个参数,在这种情况下,他们可能会打开一个新窗口,而不是使用你传递给该参数的设置。

由于Chrome在第二次和第三次调用中做了这种不寻常的事情,在大多数情况下,将自己限制为每个用户操作一个open应该可以工作,因为在大多数情况下默认是一个新选项卡,而不是一个新窗口。