這篇文章帶給大家的內容是關於行動端H5開發遇到的問題及解決方法,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
微信分享簽章錯誤invalid signature
vue單頁應用history模式下微信分享一直提示簽章錯誤invalid signature
依照微信官網文檔,已經引入jssdk,正確的配置js安全域名,後台開發人員產生的簽名也透過微信簽名工具驗證,但是前端的自訂分享一直報簽名錯誤,沒有辦法自訂分享,如果確保了哪些基本配置沒有問題,並且簽名也通過了微信簽名工具驗證,那麼可能就是前端訪問的url和後台生成簽名的url不一致導致的簽名錯誤
前端如果是通過ajax將url傳到後端獲取簽名,那麼我們需要將當前頁面除去' #'hash部分的鏈接,並且需要encodeURIComponent
let url = location.href.split('#')[0] encodeURIComponent(url)
正常來說這樣就可以實現微信自定義分享了,但是單頁應用路由切換了之後IOS端還是提示簽名錯誤,安卓端沒有問題
這是因為history模式下視圖是透過pushState來切換的,但是IOS微信客戶端(安卓客戶端已經修復了)不支援pushState的H5新特性,所以路由變化了但是微信瀏覽器取得到的url沒有變化,右上角複製連結發現,微信記錄的url還是第一次進入時的url,除非你手動刷新,或者使用window.location等頁面跳轉方法刷新,才能獲取到最新的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]) }
這個時候拿這個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")這種形式
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;
這篇文章到這裡就已經全部結束了,更多其他精彩內容可以關注PHP中文網的HTML5影片教學欄位!
以上是行動端H5開發遇到的問題及解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

H5和HTML5是不同的概念:HTML5是HTML的一個版本,包含新元素和API;H5是基於HTML5的移動應用開發框架。 HTML5通過瀏覽器解析和渲染代碼,H5應用則需要容器運行並通過JavaScript與原生代碼交互。

HTML5的關鍵元素包括、、、、、等,用於構建現代網頁。 1.定義頭部內容,2.用於導航鏈接,3.表示獨立文章內容,4.組織頁面內容,5.展示側邊欄內容,6.定義頁腳,這些元素增強了網頁的結構和功能性。

HTML5和H5沒有區別,H5是HTML5的簡稱。 1.HTML5是HTML的第五個版本,增強了網頁的多媒體和交互功能。 2.H5常用於指代基於HTML5的移動網頁或應用,適用於各種移動設備。

HTML5是超文本標記語言的最新版本,由W3C標準化。 HTML5引入了新的語義化標籤、多媒體支持和表單增強,提升了網頁結構、用戶體驗和SEO效果。 HTML5引入了新的語義化標籤,如、、、等,使網頁結構更清晰,SEO效果更好。 HTML5支持多媒體元素和,無需第三方插件,提升了用戶體驗和加載速度。 HTML5增強了表單功能,引入了新的輸入類型如、等,提高了用戶體驗和表單驗證效率。

如何寫出乾淨高效的HTML5代碼?答案是通過語義化標籤、結構化代碼、性能優化和避免常見錯誤。 1.使用語義化標籤如、等,提升代碼可讀性和SEO效果。 2.保持代碼結構化和可讀性,使用適當縮進和註釋。 3.優化性能,通過減少不必要的標籤、使用CDN和壓縮代碼。 4.避免常見錯誤,如標籤未閉合,確保代碼有效性。

H5通過多媒體支持、離線存儲和性能優化提升網頁用戶體驗。 1)多媒體支持:H5的和元素簡化開發,提升用戶體驗。 2)離線存儲:WebStorage和IndexedDB允許離線使用,提升體驗。 3)性能優化:WebWorkers和元素優化性能,減少帶寬消耗。

HTML5代碼由標籤、元素和屬性組成:1.標籤定義內容類型,用尖括號包圍,如。 2.元素由開始標籤、內容和結束標籤組成,如內容。 3.屬性在開始標籤中定義鍵值對,增強功能,如。這些是構建網頁結構的基本單位。

HTML5是構建現代網頁的關鍵技術,提供了許多新元素和功能。 1.HTML5引入了語義化元素如、、等,增強了網頁結構和SEO。 2.支持多媒體元素和,無需插件即可嵌入媒體。 3.表單增強了新輸入類型和驗證屬性,簡化了驗證過程。 4.提供了離線和本地存儲功能,提升了網頁性能和用戶體驗。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

Atom編輯器mac版下載
最受歡迎的的開源編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。