允许window.open打开新窗口而不是弹出窗口
我有这个JS代码:
window.open(loginurl, '_blank');
来自一个条件,例如:
if (userloggedin) { //popup another page } else { window.open(loginurl, '_blank'); }
“loginurl”是我想在新窗口中打开的登录URL。
问题:这将在大多数浏览器(Firefox和Chrome)中被阻止,因为它的行为类似于弹出窗口。
我想要一个仍然利用我的登录URL变量的解决方案(不改变if else语句),在新窗口中打开它,不会有任何被阻止弹出窗口的警告。
我正在寻找方法,但我从来没有找到解决方案。 如果有人可以提供一些提示或见解。 这将是高度赞赏的。
谢谢。
window.open
打开的窗口将始终被视为弹出窗口,当触发该function而没有用户操作启动它时,浏览器会阻止该窗口。
这意味着,例如,这些将不会被阻止:
$('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
,否则您永远无法确定您的窗口是否会被阻止。
这种方式不会阻止你的弹出窗口:
$.ajax({ url:"url", dataType: "text", cache: false, success: function(data){ window.open('url','_self'); } });