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