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

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

www.ft12.com8年前 (2017-07-29)短网址资讯2562
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短网址:解析ESLint 的成功之道

FT12短网址:解析ESLint 的成功之道

前言本文源自于网络,FT12短网址仅做转载,对此文无所有权。难以置信,我在 2013 年 6 月构思开发了 ESLint,7 月第一次对外发布。熟悉的读者可能还记得,ESLint 最初主要设计目标是运行时加载的检查工具(linter)。在工...

思路清奇:通过 JavaScript 获取移动设备的型号

我们一般在浏览器里识别用户的访问设备都是通过 User Agent 这个字段来获取的,但是通过它我们只能获取一个大概的信息,比如你用的是 Mac 还是 Windows,用的是 iPhone 还是 iPad。如果我想知道你...

AI能让科学研究实现自动化吗?

科学进展受限于人类思考的速度,将其外包给人工智能或许能够改变这一切。撰文:Ahmed Alkhateeb翻译:张雪科学正陷于数据危机之中。去年,仅在生物医学领域就有超过120万篇新论文发表,这令同行评审的生物医学论文总数达到了2600万篇。...

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

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

新手最常见的负面SEO方法

新手最常见的负面SEO方法

什么是负面SEO负面SEO指的是自个网站排行做不上去时,通过一些办法,通常是不正当的办法,把竞争对手的页面拉下来,有时分作用和自个页面排上去差不多。这儿说的负面SEO和利用SEO手法限制公司负面新闻(或者叫搜索引擎上的网络负面危机公关和名誉...

FT12短网址:如何假装看起来很穷?

FT12短网址:如何假装看起来很穷?

如果一个人能无所顾忌坦然说自己穷,那他不是太年轻,就是太幸福。 一般人到中年,无论如何都要想法证明自己,并没有那么穷,因为穷人的自尊心啊,稍微碰一下满地都是血。 前几天我去吃亲戚家喜酒,别人都珠光宝气穿新衣服去,显得光彩...

发表评论

访客

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