分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

js 异步操作打开新页面被浏览器拦截的问题

发布时间:2023-09-06 01:41责任编辑:傅花花关键词:js浏览器

最近开发过程中 需要进行接口认证 才能打开新窗口的需求 代码如下

 ?????????// 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 异步操作打开新页面被浏览器拦截的问题

原文地址:https://www.cnblogs.com/lisiyang/p/8432571.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved