我有一个简单的WebView,但我遇到的问题是当页面加载Android时会自动关注表单中的第一个文本字段。
换句话说,当网页加载时,Android会在第一个文本字段中显示一个光标,该字段会隐藏占位符文本。
如何防止此行为?
答案 0 :(得分:0)
我设法通过在我的输入元素上设置outline:none来防止瞬间重叠移位。
我通过设置溢出来滚动和消失键盘,以便在显示对话框时隐藏在html主体上,然后在隐藏对话框时再次将其删除。这有一个令人讨厌的副作用,重置页面的滚动位置,所以我保存并根据需要恢复它,并将所有这些hackery包装在条件中,以便它只在Android上运行。 (我希望我的Android用户在对话框打开时看到半透明叠加层下的页面内容发生变化时不会太分散注意力。)
有趣的是,我还能够通过在我的overlay元素上捕获touchstart事件并调用preventDefault()来阻止狂野页面滚动。这让我想知道所有这些疯狂是否是由这样的一系列事件引起的:
touchstart起泡到文档根目录 浏览器看到放置重复输入字段的touchstart 浏览器将焦点放在输入字段上 软键盘似乎允许输入输入字段 视口调整大小以适应软键盘 在触摸事件期间调整大小的视口看起来像是对浏览器的触摸拖动 虚假拖动会导致页面滚动并解除键盘 我没有最终捕获touchstart来解决问题,因为它阻止输入字段获得焦点,并且从javascript调用focus()只是不起作用。我已经读过Android浏览器禁用输入字段上的focus()方法,这可以解释这种行为。也许这样做是因为它不适用于它在html定义的字段上创建的重复文本小部件。