微信H5開發中常見的坑

 

坑點1:android、ios做分享時,若是hash路由模式下,無法加載正常url,發現分享的鏈接變成(https://xxx.com/?from=grounmessage&installed=0#/register?code=1111&locale=zh_cn之類的)。

解決方法:在/#/里加query值

例如:

image.png

 

坑點2:ios分享朋友圈方法(onMenuShareTimeline)時不會執行成功回調。

解決方法:成功回調加上延遲(500ms即可)

例如:

image.png

坑點3:ios鍵盤喚起後頁面input不能再次輸入(input輸入錯位)。

出現原因:固定定位的元素 在元素內 input 框聚焦的時候 彈出的軟鍵盤佔位 失去焦點的時候軟鍵盤消失 但是還是佔位的 導致input框不能再次輸入。

解決方法: 在失去焦點的時候給一個事件,使頁面滾動條高度和當前一致。

例如:


getTop() {  setTimeout(() => {    var scrollHeight =     document.documentElement.scrollTop     || document.body.scrollTop || 0;    window.scrollTo(0, Math.max(scrollHeight, 0));  }, 100); }

 

坑點4:安卓微信H5彈出軟鍵盤後擋住input輸入框。

 

解決辦法:給input和textarea標籤添加focus事件,如下,先判斷是不是安卓手機下的操作,當然,可以不用判斷機型,Document 對象屬性和方法,setTimeout延時0.5秒,因爲調用安卓鍵盤有一點遲鈍,導致如果不延時處理的話,滾動就失效了。

changefocus(){  let u = navigator.userAgent,   app = navigator.appVersion;  let isAndroid = u.indexOf('Android') > -1   || u.indexOf('Linux') > -1;  if(isAndroid){    setTimeout(function() {      document.activeElement.      scrollIntoViewIfNeeded();      document.activeElement.scrollIntoView();    }, 500);         }},

 

坑點5:微信jssdk中微信支付wx.chooseWXPay的支付簽名時間戳。

    微信jssdk中的所有使用timestamp字段均爲小寫。

但最新版的支付後臺生成簽名使用的timeStamp字段名需大寫其中的S字符。

 

坑點6:IOS不支持new Date("2019-01-01 00:00:00") 這種格式。

var date =new Date("2020-02-10 00:00:00");
這種寫法在pc和android都能正常使用,但是ios只支持var date =new Date("2020/02/10")這種寫法。調試發現 2020/02/10 等同 2010-02-10 00:00:00 ,也就是說ios默認就是從0開始計算的,我們不需要設置後面的時分秒爲 00:00:00。

 

坑點7:vue單頁應用微信分享一直提示簽名錯誤invalid signature。根據官方文檔說是需要當前頁面出去‘#hash’部分的鏈接,並且需要encodeURIComponent,可是安卓正常了,ios還是報錯。

出現原因:頁面進入的時候記錄url,如果是iOS設備那麼使用這個url獲取微信簽名。

解決方法:頁面進入的時候記錄url,如果是iOS設備那麼使用這個url獲取微信簽名。

 

router.afterEach(to => {
  sessionStorage.setItem('currentUrl',window.location.href)
})
let url = encodeURIComponent(location.href.split('#')[0])if(system == "iOS" && sessionStorage.getItem('currentUrl')) {
  url = encodeURIComponent(sessionStorage.getItem('currentUrl').split('#')[0])
}

 

 

 

更多前端技能請關注公衆號”極致簡文“

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章