您的位置:首页 > 财经 > 金融 > 脑子笨适合学计算机吗_查找企业信息的网站哪个好_女生学网络营销这个专业好吗_软文写作服务

脑子笨适合学计算机吗_查找企业信息的网站哪个好_女生学网络营销这个专业好吗_软文写作服务

2024/12/22 11:26:30 来源:https://blog.csdn.net/weixin_43515759/article/details/144524257  浏览:    关键词:脑子笨适合学计算机吗_查找企业信息的网站哪个好_女生学网络营销这个专业好吗_软文写作服务
脑子笨适合学计算机吗_查找企业信息的网站哪个好_女生学网络营销这个专业好吗_软文写作服务

在这里插入图片描述

为什么会出现这个情况?

浏览器为了防止一些站点出现恶意弹窗的问题,增加了这个拦截机制。
打开window.open的两种情况:

  1. 人为触发事件:如click事件,浏览器认为是人为触发的事件能够直接打开(不拦截)
  2. js自动触发事件:如异步触发 setTimeout等,会被拦截,但是仔细分析还有如下两种情况:
    1. 小于5s内触发:不拦截(实际上在Windows版Edge v131.0.2903.99上测试,chrome未测试 小于4990毫秒不拦截,大于等于4990毫秒拦截,实际情况请自行测试

    2. 大于等于5s触发:拦截

      // 拦截
      setTimeout(()=>{window.open('http://baidu.com')
      },5000)// 不拦截
      setTimeout(()=>{window.open('http://baidu.com')
      },3000)
      

如何解决?

正常人为操作事件下正常打开即可
异步打开的情况使用以下方法解决:

  1. 提前创建window.open窗口
const newWindow = window.open(`${env.routerPath}loading?tip=数据正在准备中,请稍后...`)
if (!newWindow) {return alert("浏览器被禁止弹出新窗口,请允许弹出窗口")
}

Q:有朋友要问了,为什么打开一个路由为loading的页面?
A:如果你的异步操作等待时间比较长,打开一个空页面比较单调枯燥,用户也会疑惑是不是系统有问题,所以这里建议你创建一个loading等待的页面,给用户一个友好展示,示例如下:
此页面不需要写任何逻辑,仅展示loading状态即可,因为后面第2步会修改页面地址
在这里插入图片描述

  1. 在异步处理完成的地方写如下代码:
const url = `${env.publicPath}page1` // 异步目标跳转页面/page1
newWindow.location.href = url // 修改目标窗口的地址
newWindow.focus(); // 浏览器标签页聚焦到新窗口上

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com