移動端H5開發遇到的問題及解決方法

本篇文章給你們帶來的內容是關於移動端H5開發遇到的問題及解決方法,有必定的參考價值,有須要的朋友能夠參考一下,但願對你有所幫助。php

微信分享簽名錯誤invalid signaturecss

vue單頁應用history模式下微信分享一直提示簽名錯誤invalid signature前端

按照微信官網文檔,已經引入jssdk,正確的配置js安全域名,後臺開發人員生成的簽名也經過微信簽名工具驗證,可是前端的自定義分享一直報簽名錯誤,沒有辦法自定義分享,若是確保了哪些基本配置沒有問題,而且簽名也經過了微信簽名工具驗證,那麼可能就是前端訪問的url和後臺生成簽名的url不一致致使的簽名錯誤vue

前端若是是經過ajax將url傳到後端獲取簽名,那麼咱們須要將當前頁面除去'#'hash部分的連接,而且須要encodeURIComponentios

1ajax

2後端

let url = location.href.split('#')[0]瀏覽器

encodeURIComponent(url)緩存

正常來講這樣就能夠實現微信自定義分享了,可是單頁應用路由切換了以後IOS端仍是提示簽名錯誤,安卓端沒有問題安全

這是由於history模式下視圖是經過pushState來切換的,可是IOS微信客戶端(安卓客戶端已經修復了)不支持pushState的H5新特性,因此路由變化了可是微信瀏覽器獲取到的url沒有變化,右上角複製連接發現,微信記錄的url仍是第一次進入時的url,除非你手動刷新,或者使用window.location等頁面跳轉方法刷新,才能獲取到最新的url

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

1

2

3

4

5

6

7

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])

}

這個時候拿這個url去獲取微信簽名就是正確的了,該方法只適合IOS設備,只要獲取簽名的url和微信記錄的url一致簽名就是正確的

往返緩存問題

點擊瀏覽器的前進和回退,有時候不會自動執行js,特別是在safari中,這與往返緩存(bfcache)有關係。
解決方法 :window.onunload = function(){};

若是是Vue單頁應用,而且使用了keep-alive的話,頁面也不會刷新,這時候一些接口請求等能夠放在beforeRouteEnter方法中

IOS端不支持new Date("2019-01-01 00:00:00") 這種格式

這種寫法new Date("2019-01-01 00:00:00")在安卓端是支持的,可是在IOS端不支持,會報NAN錯誤,因此須要把new Date("2019-01-01 00:00:00")改爲new Date("2019/01/01 00:00:00")這種形式

1

2

let date = '2019-01-01 00:00:00'

date.replace(/\-/g, '/')

微信二維碼

一個頁面可能有多個二維碼,可是長按識別二維碼只能識別最後一個二維碼,這個時候咱們須要控制頁面可視區域內只能出現一個二維碼

IOS中沒法點擊

span,p 等默認沒法點擊的標籤, IOS中監聽click事件點擊無效
解決辦法,添加 cursor: pointer;

audio音頻沒法播放

audio.play() 方法在安卓設備能夠正常播放,可是在IOS客戶端不能播放,在設置了audio的src以後,咱們須要加上這一行代碼
audio.load() 去加載音頻

能夠經過監聽loadeddata方法看音頻是否能夠開始播放了,安卓設置在音頻加載好了以後就開始播放,可是iOS端可能稍微有延遲,這個時候咱們能夠經過audio.currentTime獲取到音頻是否開始播放,這個值大於0就說明已經開始播放了

IOS移動端click事件300ms的延遲響應

fixed問題

在ios8如下系統,當小鍵盤激活時,都會出現位置浮動問題,解決方法:只須要在中間部分外層p添加css樣式position:fixed;top:50px; bottom:50px;overflow:scroll;

相關文章
相關標籤/搜索