最近开发过程中 需要进行接口认证 才能打开新窗口的需求 代码如下
// getMatchBase(.....).then( // result => { // win.open(‘/matchDetail.html?id=‘ + matchId); // }, // error => { // ....... // win.close(); // } // )
浏览器只有在认为click和submit在打开新窗口时(如果是_self则不会有此限制),这些操作是由用户主动触发时才是安全可以被执行,而ajax回调函数中去执行click和submit被浏览器认为不是由用户主动触发的,因此不能被安全执行,所以被拦截。
但是 由于异步操作的原因,浏览器会因为安全因素拦截,造成用户体验不好,目前为止我找到的靠谱的解决方法如下
将ajax请求设置为同步,
$.ajax({ url: , data:{ }, async:false, complete: function(data){ if(data.readyState == 4 && data.status == 200) { window.open(‘/matchDetail.html?id=‘ + matchId); } else { } } });
供大家参考。