成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

微信H5頁面前端開發,大多數人都會遇到的幾個兼容性坑

開發 前端
最近給公司微信公眾號,寫了微信h5業務頁面,總結分享一下前端開發過程中的幾個兼容性坑。

最近給公司微信公眾號,寫了微信h5業務頁面,總結分享一下前端開發過程中的幾個兼容性坑,項目直接拿的公司頁面,所以下文涉及圖片都模糊處理了。

1、ios端兼容input光標高度

問題詳情描述:input輸入框光標,在安卓手機上顯示沒有問題,但是在蘋果手機上

當點擊輸入的時候,光標的高度和父盒子的高度一樣。例如下圖,左圖是正常所期待的輸入框光標,右邊是ios的input光標。

出現原因分析:通常我們習慣用height屬性設置行間的高度和line-height屬性設置行間的距離(行高),當點擊輸入的時候,光標的高度就自動和父盒子的高度一樣了。(谷歌瀏覽器的設計原則,還有一種可能就是當沒有內容的時候光標的高度等于input的line-height的值,當有內容時,光標從input的頂端到文字的底部

解決辦法:高度height和行高line-height內容用padding撐開

例如:         

  1. .content{  
  2.             float: left;  
  3.             box-sizing: border-box;  
  4.             height: 88px;  
  5.             width: calc(100% - 240px);              .content-input{  
  6.               display: block;  
  7.               box-sizing: border-box;  
  8.               width: 100%;  
  9.               color: #333333;  
  10.               font-size: 28px;  
  11.               //line-height: 88px;  
  12.               padding-top: 20px;  
  13.               padding-bottom: 20px;  
  14.             }  
  15.            } 

2、ios端微信h5頁面上下滑動時卡頓、頁面缺失

問題詳情描述:在ios端,上下滑動頁面時,如果頁面高度超出了一屏,就會出現明顯的卡頓,頁面有部分內容顯示不全的情況,例如下圖,右圖是正常頁面,邊是ios上下滑動后,卡頓導致如左圖下面部分丟失。

出現原因分析:

籠統說微信瀏覽器的內核,Android上面是使用自帶的WebKit內核,iOS里面由于蘋果的原因,使用了自帶的Safari內核,Safari對于overflow-scrolling用了原生控件來實現。對于有-webkit-overflow-scrolling的網頁,會創建一個UIScrollView,提供子layer給渲染模塊使用。【有待考證】

解決辦法:只需要在公共樣式加入下面這行代碼 

  1. *{  
  2.   -webkit-overflow-scrolling: touch;  

But,這個屬性是有bug的,比如如果你的頁面中有設置了絕對定位的節點,那么該節點的顯示會錯亂,當然還有會有其他的一些bug。

拓展知識: -webkit-overflow-scrolling:touch是什么?

MDN上是這樣定義的:

-webkit-overflow-scrolling 屬性控制元素在移動設備上是否使用滾動回彈效果.

auto: 使用普通滾動, 當手指從觸摸屏上移開,滾動會立即停止。

touch: 使用具有回彈效果的滾動, 當手指從觸摸屏上移開,內容會繼續保持一段時間的滾動效果。繼續滾動的速度和持續的時間和滾動手勢的強烈程度成正比。同時也會創建一個新的堆棧上下文。

3、ios鍵盤喚起,鍵盤收起以后頁面不歸位

問題詳情描述:

 輸入內容,軟鍵盤彈出,頁面內容整體上移,但是鍵盤收起,頁面內容不下滑

出現原因分析:

固定定位的元素 在元素內 input 框聚焦的時候 彈出的軟鍵盤占位 失去焦點的時候軟鍵盤消失 但是還是占位的 導致input框不能再次輸入 在失去焦點的時候給一個事件

解決辦法: 

  1. <div class="list-warp">  
  2.   <div class="title"><span>投·被保險人姓名</span></div>  
  3.    <div class="content">  
  4.      <input class="content-input"   
  5.             placeholder="請輸入姓名"  
  6.             v-model="peopleList.name"  
  7.            @focus="changefocus()"  
  8.            @blur.prevent="changeBlur()"/>    </div>  
  9.  </div>  
  1. changeBlur(){  
  2.       let u = navigator.userAgent, app = navigator.appVersion;  
  3.       let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);  
  4.       if(isIOS){  
  5.         setTimeout(() => {  
  6.           const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0  
  7.           window.scrollTo(0, Math.max(scrollHeight - 1, 0))  
  8.           }, 200)  
  9.       }  
  10.     } 

拓展知識: position: fixed的元素在ios里,收起鍵盤的時候會被頂上去,特別是第三方鍵盤

4、安卓彈出的鍵盤遮蓋文本框

問題詳情描述:

安卓微信H5彈出軟鍵盤后擋住input輸入框,如下左圖是期待喚起鍵盤的時候樣子,右邊是實際喚起鍵盤的樣子

出現原因分析:待補充

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

  1. changefocus(){  
  2.      let u = navigator.userAgent, app = navigator.appVersion;  
  3.      let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;  
  4.      if(isAndroid){  
  5.        setTimeout(function() {  
  6.         document.activeElement.scrollIntoViewIfNeeded();  
  7.         document.activeElement.scrollIntoView();  
  8.        }, 500);         
  9.      }  
  10.    }, 

拓展知識:

Element.scrollIntoView()方法讓當前的元素滾動到瀏覽器窗口的可視區域內。而Element.scrollIntoViewIfNeeded()方法也是用來將不在瀏覽器窗口的可見區域內的元素滾動到瀏覽器窗口的可見區域。但如果該元素已經在瀏覽器窗口的可見區域內,則不會發生滾動

5、Vue中路由使用hash模式,開發微信H5頁面分享時在安卓上設置分享成功,但是ios的分享異常

問題詳情描述:

ios當前頁面分享給好友,點擊進來是正常,如果二次分享,則跳轉到首頁;使用vue router跳轉到第二個頁面后在分享時,分享設置失敗;以上安卓分享都是正常

出現原因分析:jssdk是后端進行簽署,前端校驗,但是有時跨域,ios是分享以后會自動帶上 from=singlemessage&isappinstalled=0 以及其他參數,分享朋友圈參數還不一樣,貌似系統不一樣參數也不一樣,但是每次獲取url并不能獲取后面這些參數

解決辦法:

(1)可以使用改頁面this.$router.push跳轉,為window.location.href去跳轉,而不使用路由跳轉,這樣可以使地址欄的地址與當前頁的地址一樣,可以分享成功(適合分享的頁面不多的情況下,作為一個單單頁運用,這樣刷新頁面跳轉,還是..)

(2)把入口地址保存在本地,等需要獲取簽名的時候 取出來,注意:sessionStorage.setItem(‘href’,href); 只在剛進入單應用的時候保存!【該方法未驗證】

題外話:

如果能用小程序寫的頁面,盡量上小程序吧,H5開發在微信開發者工具里看頁面效果可能看不出問題,因為不能喚起軟鍵盤。避免頻繁線上發布,可以用花生殼或者idcfengye,做內網穿透,搭建一個可以通過域名訪問的開發環境的h5頁面,在手機上看看效果,對了微信內置瀏覽器緩存機制。會導致剛提交的代碼(特別是js)效果要半個小時左右才生效。

最后:

微信H5頁面其實很多知識,登陸授權,jssdk授權,這里就只做了分享,當然還有上傳圖片、微信支付等功能,都可能會遇到坑,以上幾個坑也是比較常遇到的,如果有更好的解決方案的話,歡迎在留言區分享 

 

責任編輯:龐桂玉 來源: Web開發
相關推薦

2014-01-02 10:34:54

設計設計師

2021-01-18 15:28:13

加密貨幣比特幣貨幣

2020-02-20 10:50:30

多數人不會真正成功

2021-02-25 23:31:50

加密貨幣比特幣貨幣

2020-07-29 12:52:23

智慧城市城市數字

2018-01-02 18:06:56

2010-08-03 09:19:50

云計算調查

2021-08-09 15:06:10

數字貨幣區塊鏈貨幣

2021-03-22 06:23:47

5G 續航網速

2022-03-23 20:49:13

微信移動應用

2024-04-28 09:14:05

2023-01-30 13:28:07

LinuxSteam Deck發行版

2022-03-28 13:46:45

數字化轉型互聯網數據

2024-07-17 14:12:07

開源工具開發管理模板

2025-03-28 10:21:50

2021-09-29 23:05:11

iPhone安卓iOS

2023-02-27 15:09:14

2019-10-09 10:21:20

負載均衡架構開發

2019-10-18 19:26:23

算法數據庫技術

2024-02-01 09:34:06

HTML前端新特性
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品乱码一区二三区小蝌蚪 | 91看片免费版 | 亚洲精品在线观看视频 | 成人在线中文字幕 | 亚洲国产成人av好男人在线观看 | 国产精品一二三区在线观看 | 伊人影院在线观看 | 91精品久久久久久久久久入口 | www国产亚洲精品 | 欧美一级精品片在线看 | av中文字幕在线观看 | 久久精品av麻豆的观看方式 | 成人免费视频网站在线看 | 99久久久久久| 日本欧美在线观看视频 | 草草影院ccyy | 久久婷婷国产香蕉 | 日韩精彩视频 | 超碰在线人人 | 成人国产精品久久久 | 亚洲精品在线视频 | 久久精品亚洲精品国产欧美 | 成人福利在线 | 欧美激情亚洲激情 | 欧美精品一区二区三区在线播放 | 99精品99 | h视频在线看 | 一区二区中文字幕 | 久草视频在线播放 | 羞羞的视频免费看 | 在线视频日韩精品 | 一区二区免费高清视频 | 国产乱码精品1区2区3区 | 久久综合一区 | 日韩精品一区二区三区在线观看 | 2019天天操| 国产精品成人久久久久 | 亚洲视频在线观看免费 | 免费久久99精品国产婷婷六月 | 亚洲欧美日本在线 | 久久久久国产精品一区二区 |