javascript - 使用 modernizr 确定是否支持多窗口打开

标签 javascript google-chrome modernizr browser-detection

这里记录了我遇到的问题。
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;意思是 undefinednull
因此,在窗口无法打开的情况下,很容易触发替代方法。

您不需要 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/

相关文章:

javascript - Shiny 从服务器发送纯字符串到用户界面

javascript - 使用 PaperJS 在圆圈内书写弯曲的文本

javascript - Uncaught ReferenceError : (function) is not defined

javascript - 使用渐变文本更改元素的 HTML 内容不会在 chrome 中重新呈现

google-chrome - -webkit-linear-gradient 在 Chrome/Safari 中导致 strip 化

jquery - CSS + Jquery如何让一个div浮在其他div内容之上

javascript - 在 Play Framework 2 中使用 javascript 路由

javascript - 在(Phonegap 应用程序)中构建不填充 IOS 设备上的字段的方形表单构建

wordpress - 将 Modernizr 正确添加到 WordPress 中?

javascript - yepnope/modernizr.load 全局完成回调?