vue 在router.beforeEach获取数据,限制哪些浏览器能进入

业务场景:配置手机端能在哪些浏览器显示,比如在钉钉,在微信公众号。
实现过程:先随缘试了下宏队列(我想错了),不行。再试了下async和
await,还不行,发现beforeEach里面能写方法(一直没这样写过)。最后是以下,成功了~~O(∩_∩)O哈哈~

router.beforeEach((to, from, next) => {
let ua = navigator.userAgent.toLowerCase(); //判断浏览器的类型

  let get = () => {//后续逻辑
       //浏览器限制
      let agent_type = JSON.parse(sessionStorage.getItem("agent_type"))
      let browser_type = 0
      if (ua.match(/Alipay/i) == "alipay") {
        browser_type = 3
      } else if (ua.match(/MicroMessenger/i) == 'micromessenger' && ua.match(/wxwork/i) == 'wxwork') {
        browser_type = 5
      } else if (ua.match(/MicroMessenger/i) == 'micromessenger') {
        browser_type = 1
      } else if (ua.match(/DingTalk/i) == "dingtalk") {
        browser_type = 4
      }
      if (agent_type.indexOf(browser_type) == -1 && to.path != "/error") {
        next("/error")
      } else if (to.path == "/error") {
        next()
      }
      //浏览器限制
      
     //以下正常逻辑
    }
    
 if (!sessionStorage.getItem("agent_type")) { //判断sessionStorage没有agent_type,调用接口存入
      Axios.get(`${apiUrl}wap/vcard/tenant-config`).then((res) => {
        if (res.data.code == 200) {
          let agent_type = res.data.data.agent_type
          sessionStorage.setItem("agent_type", JSON.stringify(agent_type)) //存储能进入的浏览器标识
        }
        get()
      }).catch((e) => {
        get()
      });
    } else {
      get()
    }
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值