欧美日韩国产一区,亚洲一区视频,色综合久久久久,私密按摩师舌头伸进去了,99re6这里只有精品,夜夜性日日交xxx性hd

深究WeixinJSBridge未定義之因

  • • 發表于 8年前
  • • 作者 Fundebug
  • • 5739 人瀏覽
  • • 0 條評論
  • • 最后編輯時間 8年前
  • • 來自 [技 術]

對于Fundebug這樣一個沒有使用微信JS-SDK的產品來說,我們竟然收到了WeixinJSBridge is not defined 的報錯:

去網上一搜,發現很多開發者都遇到類似的問題:

  • 我的微信項目,沒有用到微信JS-SDK,但iphone部分手機點擊某些功能無效,后來加了window.onerror監控,發現有Uncaught ReferenceError: WeixinJSBridge is not defined報錯;
  • 從微信進入支付中心直接喚起微信支付時有時會拋出ReferenceError:weixinJSBridge is not defined的異常;
  • 使用AppCan生成Web/微信App版,調用微信JSAPI支付方式,提示WeixinJSBridge內置對象undefined;
  • ……

由此可見,這是一個很普遍的問題。但是如果沒有在測試階段偶然遇到又沒有使用線上錯誤監控的話,很難發現這個問題。
我們在這里將錯誤的原因做一個深入調查和分析,讓大家少走彎路。

什么是微信JS-SDK ?

引用官方文檔: 微信JS-SDK是微信公眾平臺面向網頁開發者提供的基于微信內的網頁開發工具包。 通過使用微信JS-SDK,網頁開發者可借助微信高效地使用拍照、選圖、語音、位置等手機系統的能力,同時可以直接使用微信分享、掃一掃、卡券、支付等微信特有的能力。

一問一答

我沒有用到微信JS-SDK, 為什么會報這個錯呢?
答: 微信內置瀏覽器會有WeixinJSBridge,但是需要一定的加載時間。

我使用了微信JS-SDK, 但是為什么會出錯呢?
答: 微信webview注入鉤子有時序問題:在WeixinJSBridge還未注入之前,就已經成功注入其它依賴于WeixinJSBridge的其它XX模塊。在XX模塊中調用WeixinJSBridge就會失敗。

如何解決

如果你開發一款移動應用,必不可少要考慮分享到微信的功能;如果你開發網頁,那么用戶之間的分享更多的也是通過微信。那么這個問題到底有多嚴重,如何解決也變得至關重要。

  • 如果網頁中未使用微信JS-SDK, 用戶在微信中打開網站可能會觸發這個錯誤,目前看來只有忽略。因為是微信JS-SDK自身的問題,我們也無法控制。

  • 關于微信支付
    • 方法一: 改為監聽ready事件之后再進行下一步操作
       if (typeof window.WeixinJSBridge == "undefined"){ 
          $(document).on('WeixinJSBridgeReady',function(){ 
              $('#weiXinPay').click(); 
           }); }
       else{ 
         $('#weiXinPay').click();
       }
      
    • 方法二: 直接使用JS-SDK文檔中的支付代碼,不要使用公眾號支付文檔里面的代碼。參考: 微信支付

后記: 關于這個問題的帖子從2014年開始就有了,然而到現在依然存在,可見一直沒有修復好!

轉載文章 閱讀原文

分享到:
0條評論
Ctrl+Enter
作者

Fundebug

Fundebug

APP:0 帖子:11 回復:14 積分:186

已加入社區[3031]天

fundebug.com小程序bug監控

作者詳情》
Top