主页 > 知识库 > ajax请求成功后新开窗口window.open()被拦截解决方法

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

热门标签:百灵鸟 老虎邮局地图标注点 科智联智能电销机器人 上海浦东百度地图标注中心注册 青海医疗智能外呼系统怎么样 襄阳外呼系统接口 目标三维地图标注 外呼系统获取客户手机号 徐州电销卡外呼系统供应商

问题:

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

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

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

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

$('.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请求json数据并用js解析(示例分析)
  • Ajax请求中的异步与同步,需要注意的地方说明
  • AJAX跨域请求json数据的实现方法
  • Ajax请求内嵌套Ajax请求示例代码
  • 如何将ajax请求返回的Json格式数据循环输出成table形式
  • Ajax请求在数据量大的时候出现超时的解决方法
  • 多ajax请求的各类解决方案(同步, 队列, cancel请求)
  • ajax请求乱码的解决方法(中文乱码)
  • ajax 同步请求和异步请求的差异分析
  • 在实战中可能碰到的几种ajax请求方法详解

标签:商洛 辛集 揭阳 红河 荆州 股票 佛山 咸宁

巨人网络通讯声明:本文标题《ajax请求成功后新开窗口window.open()被拦截解决方法》,本文关键词  ajax,请求,成功,后,新,开窗口,;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 下面列出与本文章《ajax请求成功后新开窗口window.open()被拦截解决方法》相关的同类信息!
  • 本页收集关于ajax请求成功后新开窗口window.open()被拦截解决方法的相关信息资讯供网民参考!
  • 推荐文章