[请注意,我只能在 Android 移动网络浏览器(通过模拟器使用)上重现该问题。]
概括
单击一个锚点转到页面底部,然后单击另一个锚点到页面顶部 - 并在顶部的文本框中输入内容,您将向下滚动到页面底部的锚点。
初步调查
似乎这种行为在某种程度上是具有视口元标记的结果。我推测,当用户开始键入时,Android 上的浏览器会混淆锚链接以及用户在视图中拖动的位置。我意识到这是一个有点复杂的场景,但有人有解决这个问题的提示/建议吗?
重现步骤:
A. 使用以下标记创建一个新网页 test.html:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta name="viewport" content="width = device-width; initial-scale=1.0; " />
</head>
<body>
<a name="top"></a>
<input type="text" />
<a href="#bottom">Bottom</a>
[Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text] [Dummy Text]
<a name="bottom"></a>
<a href="#top">Top</a>
</body>
</html>
B. 在您的 Android 移动浏览器上,访问 test.html
C. 点击链接“底部”
D. 点击链接“置顶”
E. 点击文本框
实际结果:
浏览器向下滚动到页面底部。用户现在看不到他们输入的内容。
预期成绩:
浏览器在 E 之后不会滚动任何地方。用户可以输入文本而不会分心。
笔记:
如果用户拖动屏幕到顶部,那么他们可以在文本框中输入而无需向下滚动。该问题似乎与锚链接、文本框和视口标签无关。如果删除了这些变量中的任何一个,则该错误不存在。