iOS 8 输入焦点时页面跳转

Jac*_*son 5 html javascript css input ios

在 iOS 8 的 Safari 上,当我专注于某个<input>元素时,整个页面会突然向下跳,然后返回到原来的位置。我的页面布局填满整个屏幕并且不打算滚动。

\n\n

这似乎与此处此处以及此视频中观察到的错误相同。这些情况下的解决方案适用于 Cordova 应用程序,但我不是在构建 Cordova 应用程序,我只是为 Mobile Safari 创建一个网站。

\n\n

我已尝试按照此处的html, body { position: fixed; }建议添加添加,但这没有用。

\n\n

我会尝试使用“禁用滚动”ontouchmove许多人之前提供的建议“禁用滚动”,但这不是用户触发的滚动,而是自动滚动。

\n\n

我已尝试按照此处的onfocus="window.scrollTo(0, 0);"建议添加添加,但这不起作用,而且我不希望它对该答案给出评论:

\n\n
\n

这看起来应该可以工作,但在我的 iPhone 5S 和 iOS 8 的 Safari 上却不起作用。event.preventDefault()与您的解决方案结合起来似乎它肯定会起作用,但我仍然得到默认的滚动行为。\xe2\x80\x93 本尼 3 月 17 日 17:53

\n
\n\n

如何防止这种反弹?

\n

Jac*_*son 0

我发现这个问题是由我们的一段代码引起的,该代码将scrollTop页面的焦点设置为0焦点。难怪!

document.addEventListener('focusin', function (event) {
    if (event.target.tagName === 'INPUT') {
        document.body.scrollTop = 0;
    }
});
Run Code Online (Sandbox Code Playgroud)

只需删除底部脚本,问题就会消失。