Javascript 很难找出我的弹出窗口被阻止的原因

Javascript 很难找出我的弹出窗口被阻止的原因,javascript,jquery,popup,Javascript,Jquery,Popup,我准备了这个JSFIDLE: 基本上,一个带有淡出回调的按钮会阻止弹出窗口,而另一个没有淡出回调的按钮则不会。我应该/可以做些什么不同的事情 谢谢你的帮助 下面是JSFIDLE中可用的代码 HTML: 浏览器阻止JS代码自动打开弹出窗口。这样可以防止页面自动打开数百个窗口。因此,弹出窗口的打开受到一些用户交互(单击)直接触发的函数调用的限制。 如果您使用动画,则会从属于“自动”类别的某种计时器调用回调。您在哪里托管Google API上的jQuery?如果执行重定向的javascript链接到页

我准备了这个JSFIDLE:

基本上,一个带有淡出回调的按钮会阻止弹出窗口,而另一个没有淡出回调的按钮则不会。我应该/可以做些什么不同的事情

谢谢你的帮助

下面是JSFIDLE中可用的代码

HTML:


浏览器阻止JS代码自动打开弹出窗口。这样可以防止页面自动打开数百个窗口。因此,弹出窗口的打开受到一些用户交互(单击)直接触发的函数调用的限制。
如果您使用动画,则会从属于“自动”类别的某种计时器调用回调。

您在哪里托管Google API上的jQuery?如果执行重定向的javascript链接到页面所在的另一个域,这可能是导致自动阻止的原因。在Chrome上已复制。在我的开发环境中,我的jquery托管在我的域(或本地)和JSFIDLE上,我不太确定。这似乎是导致阻止的原因。有没有一种方法可以以“同步”的方式调用jquery的淡出,这样它就不会使用计时器了?我不知道。由于这种行为依赖于浏览器,我不认为有一种变通方法可以在任何地方都适用,但也许有更了解情况的人会提供一种解决方案:)
<a href="#" id="anchor1">CauseBlock</a> - <a href="#" id="anchor2">Not Cause Block</a>

<div id="greenDiv" style="background-color: green;">green div</div>
// ################################################

function causeBlock() {
    causeBlockInsideFunction(function () {
        window.open("http://www.google.com/");
    });
}

function causeBlockInsideFunction(callback) {
    $("#greenDiv").fadeOut(function () {
        callback();
    });
}

// ################################################

function notCauseBlock() {
    notCauseBlockInsideFunction(function () {
        window.open("http://www.google.com/");
    });    
}

function notCauseBlockInsideFunction(callback) {
    // [...]
    callback();
}

// ################################################

$(document).ready(function() {
    $("#anchor1").click(function(e) {
        causeBlock();
    });
    $("#anchor2").click(function(e) {
        notCauseBlock();
    });
});