最近开发过程中 需要进行接口认证 才能打开新窗口的需求 代码如下
// 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 {}}});
供大家参考。
如果觉得《js 异步操作打开新页面被浏览器拦截的问题》对你有帮助,请点赞、收藏,并留下你的观点哦!