解决去掉焦点卡顿问题

有时候开发过程中发现点击输入框获得焦点后,整个页面陷入卡顿的现象,让我们来看看如何解决这个问题

$("input,textarea").on("blur",function(){
    setTimeout(() => {
    const scrollTop = document.documentElement.scrollTop || document.body.scrollTop || 0
    window.scrollTo(0, scrollTop)
}, 200)
})

iPhone在微信下 输入框失去焦点后屏幕卡住问题处理

代码解决方法

iPhone在微信下 输入框失去焦点后屏幕卡住问题,手动滑动一下平稳问题就可以解决,所以。。。。。。让需求方自己划动下屏幕吧

代码解决方法

监听到输入框的滚动事件的时候,给body一个滚动值,即可解决

document.scrollingElement.scrollTop = 100 // 这个值根据需要给

但是存在一个问题,当从一个输入框点击到另一个输入框的时候,不该触发这个滚动事件,每次滚一下体验上会很不舒服,所以需要在聚焦的时候不再触发滚动,实现方法有很多,我的代码如下

export const fixIphoneScrollBug = (function(){
let __timeoutFillinfo = null
return function fixbubInWechat(ev, bool, val = 200){
if(!isIphone()) return;
if (bool) return clearTimeout(__timeoutFillinfo)
__timeoutFillinfo = setTimeout(() =>
document.scrollingElement.scrollTop = val, 500)
}
})();

// focus 时 ,执行 fixIphoneScrollBug(ev, true)

// blur 时,执行 fixIphoneScrollBug(ev)