ios的微信公众号界面中打字键盘收起后原本页面中的点击事件失效
首先交代一下,我是用angular写的公众号项目,在点击按钮出现的弹框中打字,调起了ios的虚拟键盘,当键盘收起时,发现弹框中的点击事件失效了。其实我做过实验,就是打字完成后不点击键盘中的“完成”按钮,直接点击弹框中的按钮就是可以的,但我不可能控制用户的操作,所以只能重新找方法。既然找到原因,那就去查资料,果然早在2018年底,就有人提出这个问题,因为ios12.x系统升级,所以部分iphon..
·
首先交代一下,我是用angular写的公众号项目,在点击按钮出现的弹框中打字,调起了ios的虚拟键盘,当键盘收起时,发现弹框中的点击事件失效了。其实我做过实验,就是打字完成后不点击键盘中的“完成”按钮,直接点击弹框中的按钮就是可以的,但我不可能控制用户的操作,所以只能重新找方法。
既然找到原因,那就去查资料,果然早在2018年底,就有人提出这个问题,因为ios12.x系统升级,所以部分iphone会出现这种问题。输入框focus时展开键盘,输完点击“完成”,键盘收起,问题就出现这儿,键盘虽然收起,但body之前被键盘推上去了,所以现在需要页面重新绘制。
window.setTimeout(() => {
document.body.scrollTop = 0;
document.documentElement.scrollTop = 0;
window.scroll(0, 0);
this.zone.run(() => {});
}, 0);
// 这是angular中的写法,其中this.zone.run(() => {});下面介绍。
ngNone
NgZone是基于Zone来实现的,NgZone从Zone中fork了一份实例,是Zone派生出的一个子Zone,在Angular环境内注册的异步事件都运行在这个子Zone上。
zone中有两个方法,runOutsideAngular和run。
runOutsideAngular不会对Angular里面的变化进行跟踪。
run重新跟踪变化。
更多推荐
已为社区贡献1条内容
所有评论(0)