iphoneX 微信頁面下 拉起鍵盤后關閉鍵盤猛们,原鍵盤區(qū)域還存在
解決辦法
js 沒有辦法對手機軟鍵盤直接進行監(jiān)聽的
那是否可以對 input 失去焦點進行監(jiān)聽
搜一了一個MDN Web 文檔曾掂,發(fā)現(xiàn)
focus 和 blur 不會冒泡晋涣,而 focusin 和 focusout 可以支持冒泡,加事件代理滞造,當觸發(fā) focusout 事件后滾一下
window.addEventListener('focusout', () => {
window.scrollTo(0, 0);
});
測試后發(fā)現(xiàn) ios 可以監(jiān)聽到 focusout 事件住拭,而 android 在鍵盤收起后,input 仍處于焦點狀態(tài)磨确,無法觸發(fā) focusout 事件
添加 resize 事件后 發(fā)現(xiàn) android 在喚起鍵盤收起鍵盤后 window.innerHeight 會有改變,而 ios 不會
js 移動端對鍵盤監(jiān)聽
if (/Android/gi.test(navigator.userAgent)) {
const innerHeight = window.innerHeight;
window.addEventListener('resize', () => {
const newInnerHeight = window.innerHeight;
if (innerHeight > newInnerHeight) {
// 鍵盤彈出事件處理
} else {
// 鍵盤收起事件處理
}
});
} else {
window.addEventListener('focusin', () => {
// 鍵盤彈出事件處理
});
window.addEventListener('focusout', () => {
// 鍵盤收起事件處理
});
}