原因:在浏览器的安全机制里面,非用户触发的window.open方法,是会被拦截的。
经过实际测试,Chrome、IE不会拦截,FireFox会拦截。
//不会被拦截$('#btn').click(function () {window.open(url)});
//会被拦截$('#btn').click(function () {$.ajax({url: '',success: function (url) {window.open(url);//用户没有直接发出window.open请求,而是发出一个ajax请求,window.open方法被放在了ajax的回调函数里}}) });
解决方法:
$('#btn').click(function () {//打开一个不被拦截的新窗口var newWindow = window.open();$.ajax({url: '',success: function (url) {//修改新窗口的urlnewWindow.location.href = url;}}) });//先在回调函数之前打开新窗口,后再加载url