在ios设备上,操作表单输入时,键盘弹出时会把页面顶起来,键盘收起时并不会把页面恢复成原来的样子,造成页面样式错乱,利用focusout和focusin事件,可以间接地监听到键盘的收起和弹出事件,然后操作页面滚动到想要的位置.
focusout触发时机: 当元素即将失去焦点时,focusout 事件被触发。focusout 事件和 blur 事件之间的主要区别在于后者不会冒泡。
focusin触发时机: 当元素即将接收 focus 事件时,focusin 事件被触发。 这个事件和 focus 事件的主要区别在于后者不会冒泡。
监听方式:
let scrollTop = 0
document.body.addEventListener('focusout',()=>{
document.body.scrollTop=document.documentElement.scrollTop=scrollTop
})
document.body.addEventListener('focusin',()=>{
scrollTop = document.body.scrollTop || document.documentElement.scrollTop
})