如何使用getScript回调函数中生成的URL打开新窗口,并避免弹出窗口阻止程序?

Bar*_*lor 5 javascript ajax jquery popup

我遇到的问题是当我尝试执行类似下面的代码时,窗口将被弹出窗口阻止程序阻止.我正在使用getScript,以便我可以发出跨域请求.我正在使用jQuery 1.4.2来执行以下操作.

将被阻止的代码示例:

//Code that gets blocked by pop-up blockers
$(document).ready(function(){
    $(".popup").click(function(){
        $.getScript("URL_To_A_Javascript_File", function(){
            window.open("dynamicURL", "_blank");
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

越过阻止程序但未及时获取URL的代码示例:

//This code will get past the pop-up blocker, but the var url won't be updated 
//with the dynamicURL before the window.open() fires in browsers 
//like safari or chrome.
$(document).ready(function(){
    var url;
    $(".popup").click(function(){
        $.getScript("URL_To_A_Javascript_File", function(){
            url = "dynamicURL";
        });
        window.open(url, "_blank");
    });
});
Run Code Online (Sandbox Code Playgroud)

如何使用getScript回调函数中生成的URL打开新窗口,并避免弹出窗口阻止程序?

Bar*_*lor 6

好吧,看起来我终于想出了如何做我想做的事情.

这种方式允许我弹出窗口,而不需要处理javascript的中间页面.

var newWin;
$(document).ready(function(){
    $(".popup").click(function(){
        newWin = window.open();

        $.getScript("URL_To_A_Javascript_File", function() {
            newWin.location = "DynamicURL";
        });
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)