ajax请求响应中window.open拦截解决
问题原因:ajax回调函数中执行window.open或者模拟click事件,由于跳转操作不是用户主动触发,会被认为不安全,浏览器会进行拦截。 具体解决: function fun(){
var tmpWin = window.open()
ajax(xxx,handle(){
//回调函数
var newurl = xxxx
tmpWin.location.href = newurl;
})
}
上面方法,存在一个问题时,因为先打开了空白窗口,如果ajax请求失败(网络或业务逻辑问题)后, 新窗口中就不会有正常的结果体现,有可能造成用户疑惑。 甚至为了防止ajax响应时间过长,当窗口新建后,立即给出提示 tmpWin.document.write(“服务器正在处理中,请稍后”); 后面如果ajax正常返回,则因为设置了location值,原来打印的信息会被新的页面信息覆盖。 其他:ajax改为同步执行,用户等待时间较长,体验不好。而且服务器不能很快返回结果时仍会被拦截。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |