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

Javascript 允许window.open打开新窗口而不是弹出窗口,javascript,jquery,Javascript,Jquery,我有这个JS代码: window.open(loginurl, '_blank'); 来自某个条件,例如: if (userloggedin) { //popup another page } else { window.open(loginurl, '_blank'); } “loginurl”是我想在新窗口中打开的登录URL 问题:这在大多数浏览器(Firefox和Chrome)中都会被阻止,因为它的行为类似于弹出窗口 我想要一个解决方案,将仍然利用我的登录URL变量(不改变if

我有这个JS代码:

window.open(loginurl, '_blank');
来自某个条件,例如:

if (userloggedin) {

//popup another page

} else {

window.open(loginurl, '_blank');

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

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

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

我在寻找方法,但我从未找到解决办法。如果有人能提供一些提示或见解。我们将非常感谢


谢谢。

窗口打开的窗口。当功能被触发而没有用户操作启动时,“打开”
将始终被视为浏览器阻止的弹出窗口

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

$('a').on('click.open', function(e) { e.preventDefault(); window.open('http://disney.com') });
$(document).ready(function() { window.open('http://stackoverflow.com') });
Chrome甚至允许其他事件触发弹出窗口,而firefox不允许:

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

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

因此,除非您正在触发
窗口。在用户操作后打开
,否则您永远无法确保您的窗口不会被阻止。

这种方式不会阻止弹出窗口:

$.ajax({
    url:"url",
    dataType: "text",
    cache: false,
    success: function(data){
        window.open('url','_self');
   }
});

如果用户单击页面上的某个位置,例如在链接上,并使用此链接打开弹出窗口,则不应阻止此操作。。。或者你可能需要进入一些黑帽JS/FLASH黑客重复问题应该
$('a')。on('click.open'
只要
$('a')。on('click'
)-我已经做了一个快速搜索,没有遇到类似于
click.open
的东西,作为jQuery中的事件(尽管你的例子确实有效)?@BarryKaye“click.open”是一个带名称空间的click事件处理程序。(“click”是事件,“open”是名称空间。这意味着,例如,如果要在不解除绑定同一元素上的任何其他click事件的情况下解除绑定,可以通过调用
$('a').off('click.open')
来实现。