要点:
- 在android中软键盘收起或弹出,都会改变window的高度,所以可通过监听window的onresize事件。ios中软键盘收起或弹出,不会改变window的高度。
- 在ios中可软键盘收起、弹出,会触发输入框的失焦、获得焦点,所以可通过输入框的获取焦点情况来做判断。android软键盘收起、弹出,不会触发输入框的失焦、获得焦点。
实现
ios:
var _input = document.getElementById("gasInputBox");
_input.addEventListener("blur", function () {
// 在这里执行键盘收起时的操作
});
_input.addEventListener("focus", function () {
// 在这里执行键盘弹出时的操作
});
android:
window.addEventListener('resize', onResize);
let initialScreenSize = window.innerHeight
const onResize = () => {
const newSize = window.innerHeight;
if (!initialScreenSize) {
initialScreenSize = newSize;
}
const keyboardOpen = newSize < initialScreenSize;
if (keyboardOpen) {
// 在这里执行键盘弹出时的操作
} else {
// 在这里执行键盘收起时的操作
}
}