時(shí)隔多年,我又回來(lái)啦,哈哈哈,最近挺忙的,沒時(shí)間寫這些東西,今天終于把bug解決的差不多了,哈哈哈。
前兩天在寫H5的時(shí)候發(fā)現(xiàn),在微信瀏覽器內(nèi)打開這個(gè)網(wǎng)頁(yè),有輸入框的時(shí)候,這個(gè)輸入框很不智能,在鍵盤彈出的時(shí)候會(huì)把這個(gè)輸入框給蓋住,這就很尷尬了,,,
剛開始的時(shí)候我是在輸入框onfocus的時(shí)候動(dòng)態(tài)賦值這個(gè)頁(yè)面的scrollTop,
<van-field
v-model="remark"
rows="1"
autosize
label="備注"
type="textarea"
placeholder="請(qǐng)輸入備注"
@focus="scrollbox"
/>
scrollbox(){
//console.log(this.$refs.scrollwarp.scrollTop,this.$refs.scrollwarp.scrollHeight,'=========================')
this.$nextTick(() => {
this.$refs.scrollwarp.scrollTop=this.$refs.scrollwarp.scrollHeight - this.$refs.scrollwarp.clientHeight
});
}
發(fā)現(xiàn)其實(shí)他沒有啥用,因?yàn)楫?dāng)你點(diǎn)擊輸入框的時(shí)候,它還是老樣子,只有你在鍵盤彈起的時(shí)候?qū)L動(dòng)條滑到最下面,然后失焦,然后獲取焦點(diǎn),滾動(dòng)條位置才會(huì)在最下面,于是百度,window有一個(gè)監(jiān)聽窗口大小的事件onresize,文檔上說(shuō)當(dāng)瀏覽器被重置大小時(shí)執(zhí)行它:
window.onresize=function(){SomeJavaScriptCode};
于是就對(duì)我的代碼進(jìn)行改造:
created() {
//這里定義窗口的原始高度
this.oldHeight = document.documentElement.clientHeight
},
mounted(){
let that = this;
window.onresize = () => {
if (that.oldHeight) {
that.HeightChange = document.documentElement.clientHeight === that.oldHeight;
if (!that.HeightChange) {
this.$refs.scrollwarp.scrollTop=this.$refs.scrollwarp.scrollHeight - this.$refs.scrollwarp.clientHeight
}
}
};
},
到這里,H5軟鍵盤彈起之后就不會(huì)蓋住頁(yè)面上的元素啦。