微信webview開發(fā)的那些坑

背景:微信的安卓版封裝了自己x5內核webview。因此從一定程度上提高了安設備碎片化的統(tǒng)一性。
但由于自身的一些特性,也存在著一些坑。今天主要說的是微信網(wǎng)頁開發(fā)遇到的一些坑。
作為積累,同時給大家參考,歡迎補充。
  • 安卓和ios不同的視頻播放特性
1,視頻播放組件統(tǒng)一替換了默認video組件。并浮在最高層,無法在上面放東西。這一特性也決定了安卓webview內的視頻,不支持transform拉伸。ios可以。
2,安卓視頻播放,統(tǒng)一全屏播放。除QQ域名之外不可頁面內小屏播放。
ios是可以的,通過添加`x-webkit-airplay="true" webkit-playsinline="true" playsinline` 屬性。
(參考:http://x5.tencent.com/guide?id=2009)
3,頁面加載完成后,檢測到video,會自動下載并緩存。觸發(fā)onloadstart和oncanplay事件。ios則是在點擊播放后才觸發(fā)onloadstart和oncanplay事件。
另外pause方法會觸發(fā)onloadstart。這是個大坑。
  • 安卓刷新無效,緩存
使用js進行頁面自刷新的時候,安卓版微信并不會請求后端刷新頁面,而是自己從緩存中拿數(shù)據(jù)進行“假刷新”,這就導致我們的結合后端的一些頁面無法正常工作。解決辦法:在url后增加隨機數(shù)或時間戳之類,改變url地址。ios無此問題。
  • 圖片預加載
在微信內,我們使用常用的圖片預加載是不行的,只要圖片沒有再dom中顯示出來過,那么即使我們緩存了這個圖片。但是當引用相同圖片地址的圖片從隱藏到顯示的時候,還是會再次請求這個圖片。
解決辦法:使用顯示在dom中的元素請求圖片的地址,并移動到屏幕外,保持不影響用戶,即可,如果元素有特殊處,比如全屏的,那么可以設置最短的setTimeout讓他迅速消失。只要元素出現(xiàn)并請求了,那么他就可以正確緩存這個圖片了。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容