在写聊天功能遇到的一些问题及解决
功能场景使用flex布局 textarea固定在底部
1、ios软键盘弹出 失去焦点页面无法回弹
可在blur方法中添加 手动滚动 我这里是滚动到底部
setTimeout(() => {
let scrollHeight = document.body.scrollHeight || document.documentElement.scrollHeight
window.scrollTo(0, Math.max(scrollHeight - 1, 0));
}, 50)
ios个别机型 手动回弹后 再次点击input软键盘没有把input框顶上来 可以在获取焦点的时候再滚动一下页面
2、安卓键盘弹出 整个页面没有上移 只是把输入框顶上来了(ios会自动把页面顶上来)
可使用resize监听窗口的变化 获取键盘高度进行页面调整
window.addEventListener('resize', () => {
let height = window.innerHeight;
let keybordHight = this.winHeight - height
document.getElementById('chatRecord').style.paddingBottom = -keybordHight + 'px';
})
3、有一个机型系统是ios11.1.2系统出现整个页面没有被顶上来 而是软件盘弹出后直接覆盖到页面上了 input也被覆盖。
由于iOS键盘弹出不会走resize方法 无法根据窗口变化 获取到键盘高度,所以手动给了一个默认的键盘高度,给整体布局一个填充,效果不太好,不过整体页面input框出现和页面整体上移是实现了。