ios的微信瀏覽器輸入框失去焦點後頁面不能回彈
阿新 • • 發佈:2019-01-02
問題:註冊頁面,輸入完手機號和註冊密碼,點選獲取驗證碼,圖片驗證碼彈窗彈出,一切進行的都很完美。然而在ios微信瀏覽器裡面,無論點選哪裡,彈出層毫無響應。
開始排查問題:
-
首先排除不是z-index導致元素點不到,進而無法觸發點選事件。
-
因為使用vue框架,所以給click事件加上一個native修飾符,然而仍然毫無響應。
-
然後再排除不是因為css導致無法觸發點選事件。
-
直到滑一下頁面,才能正常響應點選事件。
一番搜尋嘗試之後,仍然不知道為什麼會出現這個bug,最後認為可能是微信瀏覽器在ios系統裡面的特殊表現,所以還是選擇滑動頁面來解決問題。
使用js滑動頁面應該不是什麼問題,可以使用document.body.scrollTop
或者window.scrollTo()
來控制頁面滑動。
最後我選擇在輸入框失去焦點時,使用window.scrollTop來滑動頁面。
程式碼如下
function kickBack() {
window.scrollTo(0, document.body.scrollTop + 1);
document.body.scrollTop >= 1 && window.scrollTo(0, document.body.scrollTop - 1);
}
寫完之後,自測發現時靈時不靈,怎麼辦?加setTimeout。
function kickBack() {
setTimeout(() => {
window.scrollTo(0, document.body.scrollTop + 1);
document.body.scrollTop >= 1 && window.scrollTo(0, document.body.scrollTop - 1);
}, 10)
}
再測,發現完美解決問題。
然而為什麼這麼解決,卻是一臉懵。。。