判斷微信、微信小程序及其他環境


判斷是否為微信、微信小程序、其他環境

研究背景

項目中有一個需求,在判斷用戶未登錄的情況下跳轉登錄,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);
          }
        });
      }
    });
  }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM