目前使用的方法是在键盘弹出的页面设置页面的最小高度min-height,请问还有哪些更为优雅的方式解决这个问题呢?
// ios键盘消失后的停留空白问题
function resolveBug( e ){
setTimeout(function(){
if(document.activeElement.tagName == 'INPUT' || document.activeElement.tagName == 'TEXTAREA'){
return
}
let result = 'pc';
if(/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { //判断iPhone|iPad|iPod|iOS
result = 'ios'
}else if(/(Android)/i.test(navigator.userAgent)) { //判断Android
result = 'android'
}
if( result = 'ios' ){
document.activeElement.scrollIntoViewIfNeeded(true);
}
},10)
}
window.addEventListener('resize', () => {
resolveBug()
})
$(document).on('focusout', function () {
resolveBug()
});
window.addEventListener('blur', () => {
resolveBug()
});
6 回答3k 阅读✓ 已解决
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
6 回答2.4k 阅读
5 回答6.4k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
场景一:如果你是在自己app中集成的h5页面
解决方案:让客户端开发人员监听键盘弹起事件,将webview的contentview的高度减去键盘的高度,这样可以解决掉原生键盘和第三方键盘的适配问题
场景二:在第三方平台,(微信其实用了第一种方案)
需要区分平台了iOS和android的处理方式不一样,android键盘弹起和收起window会触发resize事件
iOS比较恶心了,比较老的版本,UIWebview你需要对dom进行监听focus和blur事件来做出响应的调整
WKWebview的话可以使用下面方法(如果这个不能解决,使用上面的方法试下,反正遇到第三方键盘很恶心)