其实弹框之所以影响页面布局,我碰到的一般都是因为页面时position:fixed时,
键盘一弹出,布局就乱了,我的解决方案是,首先就是把fixed尽可能的改成其他的,
接着监听窗口大小变化事件,然后处理ios兼容问题
代码
//监听窗口大小变化事件
window.addEventListener('resize', function () {
if(document.activeElement.tagName === 'INPUT'){
document.activeElement.scrollIntoView({behavior: "smooth"})
}
})
但是仅靠这段代码,安卓的还好,但是ios的不可以,在键盘弹出时,页面向上移,键盘收起后,页面没有回来
先判断机型,如果是ios就监听一下输入框的失焦事件,代码如下:
var u = navigator.userAgent, app = navigator.appVersion
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
$(document).ready(function(){
$("input").blur(function(){
if (isIOS) {
blurAdjust()
// alert("1231321233")
}
});
});
// 解决苹果不回弹页面
function blurAdjust(e){
setTimeout(()=>{
// alert("1231321233")
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);
}
},100)
}