window.open 无法在所有浏览器的新选项卡中可靠地打开弹出窗口
不同的浏览器 window.open 以不同的方式实现行为,尤其是关于用户的浏览器偏好。您不能指望window.open在所有Internet Explorer,Firefox和Chrome中都存在相同的行为,因为它们处理用户的浏览器首选项的方式不同。
例如,Internet Explorer(11)用户可以选择在新窗口或新选项卡中打开弹出窗口,您无法强制Internet Explorer 11用户以某种方式打开弹出窗口 window.open,如Quentin的答案所暗示的那样。
至于Firefox(29)用户,使用window.open(url, '_blank') 取决于他们的浏览器选项卡首选项,但您仍然可以强制他们通过指定宽度和高度在新窗口中打开弹出窗口(请参阅下面的“关于Chrome的内容?”部分)。
示范
转到浏览器的设置并将其配置为在新窗口中打开弹出窗口。
Internet Explorer(11)


测试页面
如上所示,在设置Internet Explorer(11)以在新窗口中打开弹出窗口后,使用以下测试页面进行测试window.open:
Testwindow.open(url)
window.open(url, '_blank')
观察弹出窗口是在新窗口中打开的,而不是新选项卡。
您还可以在Firefox(29)中测试上面的片段,并将其选项卡首选项设置为新窗口,并查看相同的结果。
Chrome怎么样?它window.open从Internet Explorer(11)和Firefox(29)实现不同。
我不是百分百肯定,但看起来Chrome(版本34.0.1847.131 m)似乎没有任何设置可供用户选择是否在新窗口或新标签中打开弹出窗口(如Firefox和Internet Explorer)有)。我检查了Chrome文档以管理弹出窗口,但它没有提及任何有关此类事情的内容。
此外,不同的浏览器似乎再次实现 window.open 不同的行为。在Chrome和Firefox中,指定宽度和高度将强制弹出窗口,即使用户已将Firefox(29)设置为在新选项卡中打开新窗口(如在新窗口中打开JavaScript的答案中所述,而不是制表符) :html>
Testwindow.open(url)
但是,如果用户将标签设置为浏览器首选项,则上面的相同代码段将始终在Internet Explorer 11中打开新标签,即使指定宽度和高度也不会强制为其弹出新窗口。
因此window.open,Chrome中的行为似乎是在onclick事件中使用时在新选项卡中打开弹出窗口,从浏览器控制台使用时在新窗口中打开它们(如其他人所述),并在新窗口中打开它们以宽度和高度指定。
摘要
不同的浏览器 window.open 针对用户的浏览器偏好实现不同的行为。您不能指望window.open在所有Internet Explorer,Firefox和Chrome中都存在相同的行为,因为它们处理用户的浏览器首选项的方式不同。
补充阅读