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

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

www.ft12.com8年前 (2017-07-29)短网址资讯2549
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

分享给朋友:

相关文章

HTTP的长连接和短连接

HTTP的长连接和短连接

 本文总结&分享网络编程中涉及的长连接、短连接概念。    关键字:Keep-Alive,并发连接数限制,TCP,HTTP一、什么是长连接     HTTP1.1...

编程语言的动静之争:Clojure太灵活,我们该如何驾驭它?

编程语言的动静之争:Clojure太灵活,我们该如何驾驭它?

作者|FT12短网址 编辑|短链接 编程语言的圣战,除了语言种类之分,也有动静门派之别。我们写着静态语言往往想着动态语言的灵活,写着动态语言又容易想着静态语言的稳定和可靠。常听到有人说,Clojure 确实...

如何正确的“丧”,成为成功的 Loser

如何正确的“丧”,成为成功的 Loser

上帝为你关上了一扇门,然后就去洗洗睡了。上帝为你关上一扇门的时候,还会顺手帮你把窗户也关上。上帝为你关上一道防盗门,还顺手给你上了一把钛合金锁。丧出新高度Hello everyone,今晚的主题是「再见,丧的要命的一周」。不管你是一周上 6...

最新“亚洲品牌500强”:中日韩入选最多

【FT12短网址】9月28日电 业界最新发布的2017年“亚洲品牌500强”显示,中国、日本和韩国成为入榜品牌数量最多的国家。日本丰田、索尼和中国国家电网名列此次榜单前三名,前十名中另外七个品牌依次是三星、工商银行、海尔、华为、中国人寿、腾...

要怎样努力,才能修炼成一个架构师?

未来是不是人人都要学习编程?很久之前有一部电影叫黑鹰坠落,里边有一个场景是一个打字员在那儿说,因为我会打字,所以我不用上前线。这事放在现在看就比较搞笑了,毕竟现在绝大部分人都会打字。我觉得在未来,编程会像英语、电脑一样是一个很通用的技能。首...

京东京麦开放平台的高可用架构之路

京东京麦开放平台的高可用架构之路

作者|张松然 编辑|雨多田光 京麦是京东商家的多端开放式工作平台,是京东十万商家唯一的店铺运营管理平台,为京东商家提供在移动和桌面端的操作业务,京麦本身是一个开放的端体系架构,由京东官方和 ISV 为商家提供多样的应用服务。...

发表评论

访客

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