您现在的位置是:网站首页> 编程资料编程资料
ajax请求成功后新开窗口window.open()被拦截解决方法_AJAX相关_
2023-05-25
309人已围观
简介 ajax请求成功后新开窗口window.open()被拦截解决方法_AJAX相关_
问题:
前面开发项目时碰到一个问题,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验证数据库内容并将值显示在页面_AJAX相关_
- 使用ajax技术无刷新动态调用新浪股票实时数据_AJAX相关_
- 如何创建ajax对象并兼容多个浏览器_AJAX相关_
- Ajax请求内嵌套Ajax请求示例代码_AJAX相关_
- 使用Ajax技术通过XMLHttpRequest对象完成首页登录功能_AJAX相关_
- 在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦_AJAX相关_
- 浅析JSONP之解决ajax跨域问题_AJAX相关_
- Ajax在请求过程中显示进度的简单实现_AJAX相关_
- jQuery下的Ajax调试步骤_AJAX相关_
- Ajax异步请求JSon数据(图文详解)_AJAX相关_
