- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在制作一个使用 JavaScript 触摸事件的移动网站。在 iOS Safari 和 Android 版 Chrome 中一切正常,但普通的 Android 浏览器(版本 4.1.2)给我带来了麻烦。
在触摸过程中,touchstart
和 touchmove
事件按预期调用。但是,touchmove
处理程序执行的操作之一似乎会触发过早的 touchcancel
事件。 (我不确定这是否重要,但触发 touchcancel
的操作是修改 SVG 对象的 viewBox
属性。)如果我注释掉此操作,触摸过程正常进行(即完成 touchmove
到 touchend
)。
我所有的触摸处理程序都调用 preventDefault()
函数,因此问题不是此错误中描述的问题:https://code.google.com/p/android/issues/detail?id=19827 .
我读到有很多 inconsistency among browsers至于何时调用 touchcancel
。普通的 Android 浏览器是唯一对我来说有问题的浏览器。
有解决办法吗?例如,是否可以完全禁用 touchcancel
事件?我的另一个想法是让 touchcancel
处理程序以编程方式触发另一个 touchstart
/touchmove
事件,但我并没有取得太大进展。任何想法将不胜感激。
最佳答案
我知道有点晚了,但如果其他人遇到这个问题,here's a small jQuery extension这解释了如何处理 pointercancel
和 touchcancel
事件。
基本上,如果您切换到指针事件,您将能够通过简单地使用 touch-action
CSS 属性和none
的值,只要浏览器正确实现了这两个功能。 (Android 5+、Chrome 55+、IE11、Edge 等)
如果您真的必须改用遗留的触摸事件,则必须在您的触摸移动事件中实现event.preventDefault()
,这将阻止 touchcancel
从触发,但它也将完全禁用浏览器处理任何默认操作,如平移或单击。
最后一点,我不会使用触摸事件 + 触摸 Action CSS 规则,因为 touch-action
是最近才添加的,与 Pointer 一样事件。因此,虽然该组合可能适用于较新的浏览器,但它肯定在较旧的浏览器中会失败(通过意外触发 touchcancel
事件)。
检查我发布的 jQuery 扩展中的自述文件,因为它解释了使用 TouchEvent 和 PointerEvent 接口(interface)的含义。
关于javascript - 在 Android 浏览器中禁用触发 touchcancel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17266748/
看完这篇event_touchcancel文档: The touchcancel event occurs when the touch event gets interrupted. Differe
Javascript触摸事件是这样的:touchstart、touchend、touchmove、touchleave、touchcancel。我在 div 元素“#panel”上移动手指。 $(do
我正在制作一个使用 JavaScript 触摸事件的移动网站。在 iOS Safari 和 Android 版 Chrome 中一切正常,但普通的 Android 浏览器(版本 4.1.2)给我带来了
Amonst 以下四种方法调用顺序是什么... 1..触地得分2..TouchUpInside3..TouchUpOutside4..触摸取消 我可以弄清楚 touchupinside 和 touch
我正在开发的一个 Android 应用依赖于来自用户的一系列可能很长的触摸移动事件。其中一些 touchmove 事件不会触发太多计算,但有些会。看来我被咬了this feature of the A
我正在尝试构建一个网页,它可以感应用户的触摸并沿着 Canvas 拖动和对象。 所以我正在做这样的事情: var touchStart = function(e) { e.preventDef
我是一名优秀的程序员,十分优秀!