星空网 > 软件开发 > Java

ajax请求成功后新开窗口window.open()被拦截解决方法

ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢

 

问题:

前面开发项目时碰到一个问题,ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是很可惜被浏览器给拦截了,怎么解决这个问题呢?
分析:

浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了(不过如果是 _self 的话就不会有这个限制),即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截。
解决方法:

1、异步改为同步,即:async:false

2、将新开窗口指向为一个对象,然后修改对象的 url,比如:

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
$('.task').bind('click',function(){
var w = window.open();
$.ajax({
type: 'POST',
url: '/surveyTask',
dataType: 'json',
error: function(){
w.close();
},
success: function(res){
w.location = res.url;
}
});
});




最后需要说明的是:网上的动态添加 form 新开窗口的方法,并不适合 ajax 请求,至少博主测试了下仍然被浏览器所拦截。





原标题:ajax请求成功后新开窗口window.open()被拦截解决方法

关键词:ajax

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊卖家账号危在旦夕,被无良供应商趁火打劫:https://www.ikjzd.com/articles/114578
吃回头草!亚马逊再次允许卖家用联邦快递:https://www.ikjzd.com/articles/114579
年终结账攻略 | 这10个问题,跨境电商财务一定重视!:https://www.ikjzd.com/articles/114580
传亚马逊西班牙站开放物流基础设施外包:https://www.ikjzd.com/articles/114581
外国公司起诉多位中国卖家,深圳大卖榜上有名!:https://www.ikjzd.com/articles/114582
中美经贸协议签了!对跨境电商有啥影响?:https://www.ikjzd.com/articles/114583
在英国有分公司的中国公司:https://www.xlkjsw.com/tag/30029.html
英国成立:https://www.xlkjsw.com/tag/30031.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流