javascript - Android 元素选择问题

标签 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;

所有其他答案都建议防止触摸事件,但我不能这样做,因为它本来是要滚动的。任何想法是什么造成的?

最佳答案

好的,我知道了。

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

我确实遇到过这样的解决方案,但第一次尝试就失败了。在我的例子中,可滚动区域内元素的特殊性太强,导致 cursor:default 无用,我没有意识到这一点。我通过检测用户代理仅将其应用于移动设备,因此我可以用 !important 消除先前的 cursor 属性,因为它不会影响任何桌面客户端。甜!

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

关于javascript - Android 元素选择问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482288/

相关文章:

android - 为什么 Android 会忽略通知的创建?

html - Zurb 基金会 : disable image resize

JavaScript 性能预热

javascript - 从对象创建逗号分隔的字符串

javascript - 我们可以在 AngularJS 应用程序中动态使用指令吗

c# - 重定向到设备设置

javascript - 无法更新函数angularjs内的变量值

android - 将整数值分配给字符串

html - css float 浏览器大小

javascript - 使用jquery为外部类按钮动态生成内部按钮