js中因接口加载过长window.open被浏览器拦截

js中因接口加载过长window.open被浏览器拦截

问题描述:
在项目中通过接口请求后台完成文件生成,但因为后台文件生成时间较长,前台等待过长时间后才执行window.open,因此window.open会被自动拦截,但生成文件较快时仍可以正常打开新窗口。
解决思路:
主要思路:在请求接口前就执行window.open打开一个新窗口,但会出现窗口404,然后在接口请求成功后将window.open中的连接进行替换使window.open显示新的内容。
完善思路(可以提升用户体验):在前端创建一个加载页面并创建一个加载页面的路由,在请求接口前执行的window.open打开这个创建的路由界面(给用户一个加载回馈,让用户知道系统正在加载),然后在进行接口请求,请求成功后将已开的window.open的页面连接替换成想要的,这样不光可以解决window.open因过久未执行被拦截问题,也能解决没有加载反馈的问题

代码
设置文件路由

//设置加载页面路由,如发现你项目中的路由和这个不一样,可以仿照项目中404路由进行设置
  {
    path: '/路由名称',
    component: (resolve) => require(['要显示的vue文件路径'], resolve),
    hidden: true
  },

vue页面中调用的函数

    text() {
          // 加载页面路由,在此之前记得在router设置文件路由
          let { href } = this.$router.resolve({
          //与上面的文件路由中的path一致
            path:'/路由名称',
          })
          // 请求接口前打开新页面,打开的是你设置的路由
          let docwindow = window.open(href);
          getUrl(this.params).then(res=>{
            var url =“新连接”;
            //接口返回后用新连接替换已的打开的window.open,页面会重新加载显示
            docwindow.location.href=url;
            
      })
    },
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值