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

时间:2013-02-01 09:19:09

标签: javascript jquery

我有这个JS代码:

window.open(loginurl, '_blank');

来自某个条件,例如:

if (userloggedin) {

//popup another page

} else {

window.open(loginurl, '_blank');

}

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

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

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

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

感谢。

2 个答案:

答案 0 :(得分:11)

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,否则您永远无法确定您的窗口是否会被阻止。

答案 1 :(得分:0)

这种方法不会阻止你的弹出窗口:

thresh <- tab[rownames(tab) %in% names(s$alpha), ]