自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

微信H5頁(yè)面前端開發(fā),大多數(shù)人都會(huì)遇到的幾個(gè)兼容性坑

開發(fā) 前端
最近給公司微信公眾號(hào),寫了微信h5業(yè)務(wù)頁(yè)面,總結(jié)分享一下前端開發(fā)過程中的幾個(gè)兼容性坑。

最近給公司微信公眾號(hào),寫了微信h5業(yè)務(wù)頁(yè)面,總結(jié)分享一下前端開發(fā)過程中的幾個(gè)兼容性坑,項(xiàng)目直接拿的公司頁(yè)面,所以下文涉及圖片都模糊處理了。

1、ios端兼容input光標(biāo)高度

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

當(dāng)點(diǎn)擊輸入的時(shí)候,光標(biāo)的高度和父盒子的高度一樣。例如下圖,左圖是正常所期待的輸入框光標(biāo),右邊是ios的input光標(biāo)。

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

解決辦法:高度height和行高line-height內(nèi)容用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頁(yè)面上下滑動(dòng)時(shí)卡頓、頁(yè)面缺失

問題詳情描述:在ios端,上下滑動(dòng)頁(yè)面時(shí),如果頁(yè)面高度超出了一屏,就會(huì)出現(xiàn)明顯的卡頓,頁(yè)面有部分內(nèi)容顯示不全的情況,例如下圖,右圖是正常頁(yè)面,邊是ios上下滑動(dòng)后,卡頓導(dǎo)致如左圖下面部分丟失。

出現(xiàn)原因分析:

籠統(tǒng)說微信瀏覽器的內(nèi)核,Android上面是使用自帶的WebKit內(nèi)核,iOS里面由于蘋果的原因,使用了自帶的Safari內(nèi)核,Safari對(duì)于overflow-scrolling用了原生控件來(lái)實(shí)現(xiàn)。對(duì)于有-webkit-overflow-scrolling的網(wǎng)頁(yè),會(huì)創(chuàng)建一個(gè)UIScrollView,提供子layer給渲染模塊使用?!居写甲C】

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

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

But,這個(gè)屬性是有bug的,比如如果你的頁(yè)面中有設(shè)置了絕對(duì)定位的節(jié)點(diǎn),那么該節(jié)點(diǎn)的顯示會(huì)錯(cuò)亂,當(dāng)然還有會(huì)有其他的一些bug。

拓展知識(shí): -webkit-overflow-scrolling:touch是什么?

MDN上是這樣定義的:

-webkit-overflow-scrolling 屬性控制元素在移動(dòng)設(shè)備上是否使用滾動(dòng)回彈效果.

auto: 使用普通滾動(dòng), 當(dāng)手指從觸摸屏上移開,滾動(dòng)會(huì)立即停止。

touch: 使用具有回彈效果的滾動(dòng), 當(dāng)手指從觸摸屏上移開,內(nèi)容會(huì)繼續(xù)保持一段時(shí)間的滾動(dòng)效果。繼續(xù)滾動(dòng)的速度和持續(xù)的時(shí)間和滾動(dòng)手勢(shì)的強(qiáng)烈程度成正比。同時(shí)也會(huì)創(chuàng)建一個(gè)新的堆棧上下文。

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

問題詳情描述:

 輸入內(nèi)容,軟鍵盤彈出,頁(yè)面內(nèi)容整體上移,但是鍵盤收起,頁(yè)面內(nèi)容不下滑

出現(xiàn)原因分析:

固定定位的元素 在元素內(nèi) input 框聚焦的時(shí)候 彈出的軟鍵盤占位 失去焦點(diǎn)的時(shí)候軟鍵盤消失 但是還是占位的 導(dǎo)致input框不能再次輸入 在失去焦點(diǎn)的時(shí)候給一個(gè)事件

解決辦法: 

  1. <div class="list-warp">  
  2.   <div class="title"><span>投·被保險(xiǎn)人姓名</span></div>  
  3.    <div class="content">  
  4.      <input class="content-input"   
  5.             placeholder="請(qǐng)輸入姓名"  
  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.     } 

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

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

問題詳情描述:

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

出現(xiàn)原因分析:待補(bǔ)充

解決辦法:給input和textarea標(biāo)簽添加focus事件,如下,先判斷是不是安卓手機(jī)下的操作,當(dāng)然,可以不用判斷機(jī)型,Document 對(duì)象屬性和方法,setTimeout延時(shí)0.5秒,因?yàn)檎{(diào)用安卓鍵盤有一點(diǎn)遲鈍,導(dǎo)致如果不延時(shí)處理的話,滾動(dòng)就失效了   

  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.    }, 

拓展知識(shí):

Element.scrollIntoView()方法讓當(dāng)前的元素滾動(dòng)到瀏覽器窗口的可視區(qū)域內(nèi)。而Element.scrollIntoViewIfNeeded()方法也是用來(lái)將不在瀏覽器窗口的可見區(qū)域內(nèi)的元素滾動(dòng)到瀏覽器窗口的可見區(qū)域。但如果該元素已經(jīng)在瀏覽器窗口的可見區(qū)域內(nèi),則不會(huì)發(fā)生滾動(dòng)

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

問題詳情描述:

ios當(dāng)前頁(yè)面分享給好友,點(diǎn)擊進(jìn)來(lái)是正常,如果二次分享,則跳轉(zhuǎn)到首頁(yè);使用vue router跳轉(zhuǎn)到第二個(gè)頁(yè)面后在分享時(shí),分享設(shè)置失?。灰陨习沧糠窒矶际钦?/p>

出現(xiàn)原因分析:jssdk是后端進(jìn)行簽署,前端校驗(yàn),但是有時(shí)跨域,ios是分享以后會(huì)自動(dòng)帶上 from=singlemessage&isappinstalled=0 以及其他參數(shù),分享朋友圈參數(shù)還不一樣,貌似系統(tǒng)不一樣參數(shù)也不一樣,但是每次獲取url并不能獲取后面這些參數(shù)

解決辦法:

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

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

題外話:

如果能用小程序?qū)懙捻?yè)面,盡量上小程序吧,H5開發(fā)在微信開發(fā)者工具里看頁(yè)面效果可能看不出問題,因?yàn)椴荒軉酒疖涙I盤。避免頻繁線上發(fā)布,可以用花生殼或者idcfengye,做內(nèi)網(wǎng)穿透,搭建一個(gè)可以通過域名訪問的開發(fā)環(huán)境的h5頁(yè)面,在手機(jī)上看看效果,對(duì)了微信內(nèi)置瀏覽器緩存機(jī)制。會(huì)導(dǎo)致剛提交的代碼(特別是js)效果要半個(gè)小時(shí)左右才生效。

最后:

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

 

責(zé)任編輯:龐桂玉 來(lái)源: Web開發(fā)
相關(guān)推薦

2014-01-02 10:34:54

設(shè)計(jì)設(shè)計(jì)師

2021-01-18 15:28:13

加密貨幣比特幣貨幣

2020-02-20 10:50:30

多數(shù)人不會(huì)真正成功

2021-02-25 23:31:50

加密貨幣比特幣貨幣

2020-07-29 12:52:23

智慧城市城市數(shù)字

2018-01-02 18:06:56

2021-08-09 15:06:10

數(shù)字貨幣區(qū)塊鏈貨幣

2010-08-03 09:19:50

云計(jì)算調(diào)查

2021-03-22 06:23:47

5G 續(xù)航網(wǎng)速

2022-03-23 20:49:13

微信移動(dòng)應(yīng)用

2024-04-28 09:14:05

2023-01-30 13:28:07

LinuxSteam Deck發(fā)行版

2022-03-28 13:46:45

數(shù)字化轉(zhuǎn)型互聯(lián)網(wǎng)數(shù)據(jù)

2024-07-17 14:12:07

開源工具開發(fā)管理模板

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

負(fù)載均衡架構(gòu)開發(fā)

2019-10-18 19:26:23

算法數(shù)據(jù)庫(kù)技術(shù)

2024-02-01 09:34:06

HTML前端新特性
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)