夸克浏览器软键盘遮挡输入框是其特有行为,因禁用scrollIntoView自动抬升且fixed布局失效;需通过聚焦延迟滚动、UA条件注入脚本及动态bottom计算修复。

在夸克浏览器中访问某些网页表单时,点击底部输入框后软键盘弹出直接盖住输入框,用户无法看到正在输入的内容,也无法确认光标位置,必须收起键盘才能继续操作。
确认是否为夸克特有行为
先在 Chrome 或 Safari 中打开同一页面测试:若其他浏览器正常滚动至输入框可见,则问题锁定在夸克的 WebView 渲染策略或 UA 识别逻辑;若同样遮挡,说明是页面自身未适配移动端键盘弹出场景。
夸克默认使用 Chromium 内核,但部分版本会禁用或弱化 scrollIntoView 的自动抬升行为,尤其对 textarea 和底部 fixed 容器内的输入框响应迟钝。
前端临时修复:聚焦后强制滚动到可视区域
在页面加载完成后,为所有文本类输入框绑定聚焦事件:
第一步:获取所有需处理的输入元素:const inputs = document.querySelectorAll('input[type="text"], input[type="tel"], input[type="email"], textarea');
第二步:遍历绑定 focus 事件,加入 【必须加 setTimeout 延迟执行,否则 DOM 尚未完成键盘布局计算】:
inputs.forEach(el => { el.addEventListener('focus', () => { setTimeout(() => { el.scrollIntoView({ block: 'nearest', inline: 'start' }); }, 150); }); });
这一步不能省略延时——夸克在 focus 触发瞬间仍按原始视口高度计算,150ms 后键盘已初步定位,scrollIntoView 才能拿到真实可用的滚动偏移量。
服务端/构建层兼容方案:注入轻量修复脚本
方法一:通过 Nginx 或 Cloudflare Workers,在 HTML 响应头中注入内联脚本(无需修改源码):
匹配 </body> 前插入一段自执行函数,仅当 UA 包含 Quark 且设备为 Android 时启用修复逻辑。
方法二:若项目使用 Webpack/Vite,可在 index.html 底部添加条件加载脚本:<script>if (navigator.userAgent.includes('Quark') && /Android/.test(navigator.userAgent)) { /* 上述 scrollIntoView 逻辑 */ }</script>
注意:不要全局监听 resize——夸克在键盘收起时可能触发多次 resize,导致输入框反复跳动。
规避 fixed + bottom 布局陷阱
检查表单容器是否设置了 position: fixed; bottom: 0;。这种写法在夸克中极易失效,因为键盘覆盖模式下 fixed 元素仍锚定在 viewport 底部,而非视觉底部。
替换为相对定位+动态 bottom 计算:监听 focus 时读取 window.innerHeight,再用 getBoundingClientRect().bottom 判断是否超出,超出则临时设置 style.bottom = 'calc(100vh - Xpx)',其中 X 是估算键盘高度(通常取 240–280px)。
这一步改完后,夸克下输入框将稳定停在键盘上方约 20px 处,无需依赖不可靠的 resize 事件。



















