Android 浏览器 / 三星 Galaxy SII 网页表单上的滚动错误。选择列表命中框不滚动

Android browser / Samsung Galaxy SII scrolling bug on web forms. Select list hitboxes don't scroll

提问人:pantryfight 提问时间:7/20/2012 最后编辑:Nmkpantryfight 更新时间:11/8/2023 访问量:9969

问:

编辑:我已经将一个视频上传到 youtube 演示了这里的错误:http://www.youtube.com/watch?v=zkDYlgtX5Hk

我有一个非常奇怪的错误,我发现在运行 Android 2 ICS 的三星 Galaxy S4.03 上测试我的新 Web 应用程序。

发生的情况是,当您在默认 Web 浏览器中加载表单,然后向下滚动页面时,命中框/可触摸区域似乎停留在页面首次加载时在屏幕上的位置,即使表单元素本身已向上滚动屏幕。

据我所知,我所拥有的少数测试设备,我认为这只会发生在三星Galaxy S2上,因为我在Android模拟器中使用相同版本的android进行了尝试,并且无法复制该问题。我知道这使它成为一个非常特定的用户群,但是上次我检查了Galaxy s2是我的国家(澳大利亚)最受欢迎的Android手机,所以找到修复程序会很好。

我创建了一个非常简单的页面来演示这一点 http://users.tpg.com.au/geoffica/test.html

您可以通过执行以下操作来重现该问题:

  1. 在Galaxy S2上加载页面
  2. 滚动浏览器,使页面完全填满屏幕,地址栏位于屏幕顶部。
  3. 在选择框所在的位置,将手指放在屏幕一侧,作为选择列表所在位置的标记。
  4. 向下滚动页面任意距离(同时仍将选择列表保留在屏幕上),然后触摸选择列表曾经所在的空白区域,选项应该会出现在屏幕上。可能需要几次尝试才能获得它,但它会发生。

现在我知道你认为这很难复制,而且可能很少发生,但是在我为客户构建的表单上,由于元素的位置,命中框总是与表单的提交按钮重叠,因此很难点击提交按钮。如果命中框重叠,选择列表也会从其他选择列表中窃取触摸,从而在触摸时出现错误的选项。

我尝试了很多方法,但到目前为止我发现的唯一解决方法是使用 touchstart 事件来触发我的提交按钮而不是单击事件。这似乎发生在选择列表的点击事件之前,并阻止它首先进入,但这远非理想,并不能阻止选择列表从页面上的其他元素窃取点击。

我还考虑过滚动我自己的jquery插件,也许可以将选择列表放在屏幕外,然后通过触摸链接或其他东西来触发它们的点击事件。如果是移动设备,则无论选择列表的位置如何,选项都会出现在屏幕上。然而,这将是相当麻烦的,我需要考虑这对来自PC或iPad的用户的影响,例如,它会在下拉列表中显示选项。这对我来说听起来很有问题。甚至可能需要一些Galaxy s2特定的浏览器/设备嗅探。

除了不使用选择列表之外,有没有人对此有真正的解决方法?

HTML android-4.0-冰淇淋三明治 galaxy android-browser samsung-mobile

评论

0赞 PC. 8/23/2012
你找到什么解决方案了吗?我也有同样的问题。
0赞 pantryfight 8/24/2012
不,我从来没有找到解决方案。在我工作的网站上,它经常发生在搜索页面的提交按钮上(因为这些项目在页面上的位置),这真的很令人沮丧。我通过使用该按钮的“touchstart”而不是“click”触发提交操作(如上所述)来修复此问题,但我无法修复它可能在网站上发生的其他各个地方。不过,这似乎肯定是浏览器/操作系统的错误。只能希望用户安装Chrome而不是默认浏览器。

答:

-6赞 ucefkh 2/14/2013 #1

我认为这可能是您可以使用 Jquery-mobile 解决的问题 很简单,因为当您不使用它时,您的网站在移动浏览器上看起来很奇怪

也许这就是解决方案,这只是一个提示:)

0赞 Anonamous 6/14/2013 #2

你有没有机会使用绝对定位?这将固定在屏幕上的某个区域,而不是页面上。

0赞 Yonatan Ayalon 7/17/2014 #3

首先,我会将文档标题更新为正确的 HTML5 标题:

<!DOCTYPE html>