这里记录了我遇到的问题。
window.open behaviour in chrome tabs/windows
在 chrome 中无法通过 javascript 打开多个窗口。
如果支持,我想打开多个窗口,如果不支持,我将简单地返回一个链接列表。
有没有办法使用 modernizr 或除了浏览器嗅探之外的其他方法来确定是否支持该行为?
最佳答案
这种在浏览器之间甚至通过浏览器配置打开多个窗口的能力。 所以永远不要假设你将能够打开多个弹出窗口,你可能能够,但你只能通过测试知道,测试艰难是非常容易的。
要测试打开弹出窗口是否成功,请检查返回值。
var popupWindow = window.open('http://www.google.com/');
if (!popupWindow) {
console.log('the window did not open');
// do other stuff
}
如果窗口打开,返回值将是一个 Window
对象。
如果窗口没有打开,返回值将为 falsy,这个确切的返回值可能因弹出窗口阻止程序而异,但通常如果窗口没有打开,您可以假设该值为 false;意思是 undefined
或 null
。
因此,在窗口无法打开的情况下,很容易触发替代方法。
您不需要 modernizr 或任何插件,返回 Window 对象的行为在所有浏览器中都是相同的。
MDN 引用:
https://developer.mozilla.org/en-US/docs/Web/API/Window/open
Firefox 和 Safari 似乎默认支持打开多个窗口。然而,Chrome 会阻止第二个窗口并显示小的“弹出”阻止消息。 此外,Chrome 还将阻止不是由直接用户操作产生的打开窗口;表示单击或按键。
关于javascript - 使用 modernizr 确定是否支持多窗口打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37685904/