javascript - 允许 window.open 打开新窗口而不是弹出窗口

标签 javascript jquery

我有这个 JS 代码:

window.open(loginurl, '_blank');

例如来自一个条件:

if (userloggedin) {

//popup another page

} else {

window.open(loginurl, '_blank');

}

“loginurl”是我想在新窗口中打开的登录 URL。

问题:这将在大多数浏览器(Firefox 和 Chrome)中被阻止,因为它的行为类似于弹出窗口。

我想要一个仍然使用我的登录 URL 变量(不改变 if else 语句)的解决方案,在新窗口中打开它,而不出现任何弹出窗口被阻止的警告。

我正在寻找方法,但我从未找到解决方案。如果有人可以提供一些提示或见解。将不胜感激。

谢谢。

最佳答案

window.open 打开的窗口在没有用户操作启动的情况下触发该功能时,将始终被视为弹出窗口以被浏览器阻止。

这意味着例如这些不会被阻止:

$('a').on('click.open', function(e) { e.preventDefault(); window.open('http://disney.com') });

Chrome 甚至允许其他事件触发弹出窗口,而 firefox 不允许这样做:

$(document).on('keydown', function(e) { window.open('http://stackexchange.com') });

这将被阻止:

$(document).ready(function() { window.open('http://stackoverflow.com') });

因此,除非您在用户操作后触发 window.open,否则您永远无法确定您的窗口不会被阻塞。

关于javascript - 允许 window.open 打开新窗口而不是弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14643040/

相关文章:

javascript - 如何在 Javascript 中解析以下 JSON?

javascript - 使用 jquery 检查复选框时是否可以打开弹出窗口?如果可以,如何打开?

javascript - 样式组件在重新渲染时不应用过渡效果?

javascript - jQuery.width() 和 height() 在 IE 和 Chrome 上返回不同的值

javascript - 固定列表定位

java - Java SHA1 与 JavaScript SHA1 的不同

javascript - jQuery .closest 返回未定义

javascript - 以多次调用结束(由于循环引用) - JQuery

JavaScript,尝试让按钮在单击时移动

jquery - 使用键盘选择单选按钮时未触发更改事件