最近app嵌套H5页面时,需要input输入,但是在ios屏幕上时,input引起软键盘弹出,此时ios页面高度发生变化,ios屏幕为保证输入框在可视范围内,往往会发生滑动。但是输入结束后,屏幕未回到底部。导致底部出现高度差。
处理方法:监听window屏幕的foucusin和focusout事件,视情移动屏幕至底部
此处做了延时执行,是因为在输入框切换的时候也会触发focusout和focusin事件,但此时用户输入并未完成,所以做30毫秒延时,避免触发回到底部。
//用户完成输入时,点击输入完成,收回软键盘的一瞬间,触发此事件--------失去焦点
window.addEventListener('focusout', function () {
this.focus = false;
setTimeout(function () {
if(this.focus==false){
window.scrollTo(0,0);
};
},30)
});
//点击输入框获得焦点,此时用户开始/正在输入
window.addEventListener('focusin', function (){
this.focus = true;
});
移动端关闭iOS键盘首字母自动大写
<input type="text" autocapitalize="off" />
当虚拟键盘弹出时,默认情况下键盘是开启首字母大写的功能的,根据某些业务场景,可能我们需要关闭这个功能,移动版本webkit为input元素提供了autocapitalize属性,通过指定autocapitalize=”off”来关闭键盘默认首字母大写。