码迷,mamicode.com
首页 > 微信 > 详细

判断微信、微信小程序及其他环境

时间:2019-09-11 17:53:59      阅读:527      评论:0      收藏:0      [点我收藏+]

标签:iap   ==   location   gen   www   小程序   return   ons   false   

判断是否为微信、微信小程序、其他环境

研究背景

项目中有一个需求,在判断用户未登录的情况下跳转登录,toLogin通过window.location.href进行跳转登录。在线上环境中,发现在未登录的情况下,Iphone 小程序中偶尔跳转失效。定位代码发现判断小程序函数返回结果在跳转逻辑之后才获得结果,猜测由于判断环境代码打断跳转的进行。临时方案:跳转后通过setTimeout再进行一次跳转。

目前解决方案如下:


  toLogin() {
    if(isMiniApp() === null) {
      setTimeout(() => {
        toLogin()
      }, 100)
    }
    window.location.href='https://www.login.com'
  }

通过资料查询得出如下解决方案,通过promise获取是否未小程序环境,保证在执行其他逻辑之前拿到是否为小程序环境的结果。

引入js

    <script src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>

promise封装判断函数


  /**
   * 判断是否为微信小程序
   * @export
   * @returns
   */
  export function isWeChatMiniApp() {
    const ua = window.navigator.userAgent.toLowerCase();
    return new Promise((resolve) => {
      if (ua.indexOf('micromessenger') == -1) {
        console.log("不在微信或者小程序中")
        resolve(false);
      } else {
        wx.miniProgram.getEnv((res) => {
          if (res.miniprogram) {
            console.log("在小程序中")
            resolve(true);
          } else {//在微信中
            console.log("在微信中")
            resolve(false);
          }
        });
      }
    });
  }

判断微信、微信小程序及其他环境

标签:iap   ==   location   gen   www   小程序   return   ons   false   

原文地址:https://www.cnblogs.com/MarphyDemon/p/11507405.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!