ajax请求响应中window.open拦截解决

前端之家收集整理的这篇文章主要介绍了ajax请求响应中window.open拦截解决前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

问题原因:

ajax回调函数中执行window.open或者模拟click事件,由于跳转操作不是用户主动触发,会被认为不安全,浏览器会进行拦截
1: 在fun方法调用window.open是不会被拦截的。
2:如果不是打开新窗口,而是改原来的网页地址,可以使用window.location = newurl 来实现,这样不会被拦截

具体解决

function fun(){
     var tmpWin  = window.open()
      ajax(xxx,handle(){ 
            //回调函数
            var  newurl  = xxxx
            tmpWin.location.href = newurl;
       })
}

上面方法,存在一个问题时,因为先打开了空白窗口,如果ajax请求失败(网络或业务逻辑问题)后, 新窗口中就不会有正常的结果体现,有可能造成用户疑惑。
一个解决办法是,当ajax出现问题时,可以考虑给出一个提示,如 tmpWin.document.write(“服务器处理异常”);

甚至为了防止ajax响应时间过长,当窗口新建后,立即给出提示 tmpWin.document.write(“服务器正在处理中,请稍后”);

后面如果ajax正常返回,则因为设置了location值,原来打印的信息会被新的页面信息覆盖。

其他:ajax改为同步执行,用户等待时间较长,体验不好。而且服务器不能很快返回结果时仍会被拦截

原文链接:https://www.f2er.com/ajax/161666.html

猜你在找的Ajax相关文章