Android元素选择问题

时间:2013-10-20 20:11:02

标签: javascript android css

我正试图让我的网站平板电脑友好,我面临一个奇怪的问题。

我正在使用Chrome 30在Android 4.0平板电脑上进行测试。

我有一个固定的模态弹出屏幕。当此屏幕打开时,我们不希望让用户滚动背景,以防止触摸事件。但是,在此窗口中,我们有一个带overflow:scroll的可滚动区域,因此如果在那里检测到触摸开始事件,则不会阻止触摸事件。到目前为止一切顺利 - Android负责任地按预期滚动该区域。

问题是,如果用户长按滚动区域内的元素大约半秒钟,然后滚动 - 触摸开始的元素似乎暂时被选中。那个选择稍微消失了。但是,如果用户在该位期间滚动 - 整个页面会滚动而不是滚动区域。好像焦点已经改变了。发生了什么事?

我尝试在内部元素上设置CSS选择规则,但它没有帮助。

-webkit-touch-callout:none;
-webkit-user-select:none;
-khtml-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;

其他每一个答案都建议阻止我无法触摸的触摸事件,因为它意味着滚动。是什么原因引起了这个?

1 个答案:

答案 0 :(得分:0)

好的,我明白了。

cursor:default!important添加到上述CSS规则中。

我遇到过这样的解决方案但是第一次尝试失败了。就我而言,可滚动区域内元素的特殊性太强,使cursor:default无效,我没有意识到。我通过检测useragent将其仅应用于移动设备,因此我可以用cursor解除之前的!important属性,因为它不会影响任何桌面客户端。甜!

仍然不确定为什么会这样。如果有人可以提供有关cursor属性如何影响Android上的Chrome的信息,我将不胜感激。