14

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

我发现了一个非常奇怪的错误,我在运行 Android 4.03 ICS 的三星 Galaxy S2 上测试我的新 Web 应用程序。

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

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

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

您可以通过执行以下操作来复制问题:

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

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

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

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

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

4

3 回答 3

0

您是否有机会使用绝对定位?这将修复到屏幕上的某个区域而不是页面。

于 2013-06-14T01:06:14.840 回答
0

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

<!DOCTYPE html>
于 2014-07-17T12:56:42.060 回答
-6

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

可能这是解决方案,这只是一个提示:)

于 2013-02-14T14:30:40.083 回答