溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

微信H5頁面兼容性問題分析及解決方法

發(fā)布時(shí)間:2021-11-26 15:16:38 來源:億速云 閱讀:446 作者:柒染 欄目:編程語言

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)碛嘘P(guān)微信H5頁面兼容性問題分析及解決方法,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

隨著H5頁面越來越流行,越來越多的開發(fā)者都開始用最近H5做微信公眾號(hào),在這個(gè)過程中自然也會(huì)遇到不少的問題。小編在這里整理了五種常見的微信H5頁面兼容性問題,來和大家分析一下問題的詳情、出現(xiàn)原因以及相對(duì)應(yīng)的解決方法。有相關(guān)問題的小伙伴,就一起來看看吧!

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

問題詳情描述:input輸入框光標(biāo),在安卓手機(jī)上顯示沒有問題,但是在蘋果手機(jī)上當(dāng)點(diǎn)擊輸入的時(shí)候,光標(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撐開。

例如:

.content{

float: left;

box-sizing: border-box;

height: 88px;

width: calc(100% - 240px);

.content-input{

display: block;

box-sizing: border-box;

width: 100%;

color: #333333;

font-size: 28px;

//line-height: 88px;

padding-top: 20px;

padding-bottom: 20px;

}

}

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

問題詳情描述:

ios當(dāng)前頁面分享給好友,點(diǎn)擊進(jìn)來是正常,如果二次分享,則跳轉(zhuǎn)到首頁;使用vue router跳轉(zhuǎn)到第二個(gè)頁面后在分享時(shí),分享設(shè)置失??;以上安卓分享都是正常。

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

解決辦法:

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

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

3、ios端微信h6頁面上下滑動(dòng)時(shí)卡頓、頁面缺失。

問題詳情描述:在ios端,上下滑動(dòng)頁面時(shí),如果頁面高度超出了一屏,就會(huì)出現(xiàn)明顯的卡頓,頁面有部分內(nèi)容顯示不全的情況。

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

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

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

*{

-webkit-overflow-scrolling: touch;

}

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

問題詳情描述:

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

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

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

解決辦法:

<div class="list-warp">

<div class="title"><span>投&middot;被保險(xiǎn)人姓名</span></div>

<div class="content">

<input class="content-input"

placeholder="請(qǐng)輸入姓名"

v-model="peopleList.name"

@focus="changefocus()"

@blur.prevent="changeBlur()"/>

</div>

</div>

changeBlur(){

let u = navigator.userAgent, app = navigator.appVersion;

let isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/);

if(isIOS){

setTimeout(() => {

const scrollHeight = document.documentElement.scrollTop || document.body.scrollTop || 0

wind

ow.scrollTo(0, Math.max(scrollHeight - 1, 0))

}, 200)

}

}

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

問題詳情描述:

安卓微信H5彈出軟鍵盤后擋住input輸入框。

解決辦法:給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)就失效了

changefocus(){

let u = navigator.userAgent, app = navigator.appVersion;

let isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1;

if(isAndroid){

setTimeout(function() {

document.activeElement.scrollIntoViewIfNeeded();

document.activeElement.scrollIntoView();

}, 500);

}

}

上述就是小編為大家分享的微信H5頁面兼容性問題分析及解決方法了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI