[英]How can I open a new window using a URL that is generated inside the getScript callback function, and avoid pop-up blockers?
我遇到的问题是当我尝试执行类似下面的代码时,窗口将被弹出窗口阻止程序阻止。 我正在使用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");
});
});
});
越过阻止程序但未及时获取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");
});
});
如何使用getScript回调函数中生成的URL打开新窗口,并避免弹出窗口阻止程序?
好吧,看起来我终于想出了如何做我想做的事情。
这种方式允许我弹出窗口,而不需要处理javascript的中间页面。
var newWin;
$(document).ready(function(){
$(".popup").click(function(){
newWin = window.open();
$.getScript("URL_To_A_Javascript_File", function() {
newWin.location = "DynamicURL";
});
return false;
});
});
你无法避免弹出窗口拦截器,让我们都感谢你。
当您的代码从某个事件循环打开一个窗口时,这不是用户操作的直接结果(通常意味着“单击”事件),浏览器会假定用户应该选择是否查看新窗口。
对于像“getScript”这样的东西,在获取脚本时调用的处理程序属于这种非用户事件循环之一,因此阻塞规则适用。
或许,您可以从新窗口运行“getScript”代码。 浏览器将允许从“单击”处理程序打开窗口。
只是不使用弹出窗口,而是使用Lightbox之类的东西。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.