当前位置:首页 > 短网址资讯 > 正文内容

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

www.ft12.com9年前 (2017-07-29)短网址资讯2617
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 请求,至少博主测试了下仍然被浏览器所拦截。

扫描二维码推送至手机访问。

版权声明:本文由短链接发布,如需转载请注明出处。

本文链接:https://www.ft12.com/article_357.html

分享给朋友:

相关文章

FT12短网址教你如何记录阅读进度

大家是否会遇到这些需求:如果有三个tab页签,从某个tab页签下跳出去打开新页后,点击浏览器后退键,能回到跳出去的相应tab页签下希望像原生app那样在wap端的列表页跳到详情页,点击浏览器后退键,能回到跳出去的列表处如果有上拉加载更多,希...

专治各种想不开(强烈建议一定要收藏)

专治各种想不开(强烈建议一定要收藏)

失去的东西,有必要去追讨吗?佛曰:失去的东西,其实从未曾真正地属于你,不必惋惜,更不必追讨。生活太累,如何轻松?佛曰:生活累,一小半源于生存,一小半源于欲望与攀比。昨天与今天,我们该如何把握?佛曰:不要让太多昨天占据你的今天。如何对自己,对...

阿里巴巴马云:快递公司注定将成为技术公司,保证所有小企业通货权

阿里巴巴马云:快递公司注定将成为技术公司,保证所有小企业通货权

[ 短网址资讯导读 ] 5月22日,杭州云栖小镇,在2017全球才智物流峰会上,阿里巴巴董事局主席马云说,物流公司应当出资人才、技能,而且要联合作战,方能应对天天10亿包裹的业务体量。“我通知我们,一天十亿只包裹,不会超过八年,估...

如何成为牛逼的产品经理?硅谷连续创业者这样说

编者注:Jim Patterson,“大麻界的Uber”Eaze的首席执行官,深谙产品之道的企业家,曾联合创办包括DineOnMe、AudioCaseFiles、Zinc在内的多家公司,并曾担任过诸多企业的首席产品官。  五年前,Clove...

中国将在人工智能时代称霸世界

中国宣布至2030年,中国企业将成为人工智能技术领域的全球领导者。这与中国最新的五年计划密切相关,该计划将科学和技术研究规划为战略重点。“中国制造2025”、“互联网+人工智能计划三年指导”、“新一代人工智能发展计划”等政策,都旨在推动中国...

英国和中国的人工智能医学应用已经改变未来

英国和中国的人工智能医学应用已经改变未来

[ 短网址导读 ] AI医生只是人工智能应用于医疗保健领域的一个缩影。机器学习和大数据的快速商业化,已经助推人工智能来到医疗保健和生命健康领域的前沿位置,将注定会改变行业内疾病诊断和疾病治疗的方式。图片来自“123rf.com.c...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。