之前在开发项目的时候遇到了一个问题。 ajax异步请求成功后,需要打开一个新窗口打开url。 使用了window.open()方法,可惜被浏览器屏蔽了。 如何解决这个问题呢?
浏览器之所以拦截新打开的窗口,是因为该操作不是用户触发的,所以认为不安全而拦截(但如果是_self,就没有这个限制了),即使ajax回调 function 模拟点击或提交(trigger(‘click’))等用户行为的执行,浏览器也会认为不是用户主动触发的,所以不能安全执行导致被拦截。
解决方法:
1.将异步改为同步,即:async:false
2、将新打开的窗口指向一个对象,然后修改该对象的url,例如:
$('.task').bind('click',function(){ var w = window.open(); $.ajax({ type: 'POST', url: '/yourURL', dataType: 'json', error: function(){ w.close(); }, success: function(res){ w.location = res.url; } }); });
如果是get或者post方法的话,只需要改为同步即可,在全局设置:
$.ajaxSetup({ async : false });
这样就不会被浏览器主动拦截了,亲测可用。(马哥源码 tang)
1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!