javascript - 如何绑定(bind) Mousedown 和 Touchstart,但不响应两者?安卓、jQuery

标签 javascript android jquery

在一个也可以在移动设备上查看的网站上工作,并且需要在 touchstart 和 mousedown 上绑定(bind)一个操作。

看起来像这样

 $("#roll").bind("mousedown touchstart", function(event){

 someAction();

它在 Iphone 上运行良好,但在 Android 上它响应两次。

event.stopPropagation();
event.preventDefault();

添加此代码修复了 Android Chrome 的问题,但不适用于 Android 默认浏览器。还有其他可以解决所有android问题的技巧吗?

最佳答案

element.on('touchstart mousedown', function(e) {
    e.preventDefault();
    someAction();
});

preventDefault 取消事件,as per specs

您会获得 touchstart,但一旦您取消它,您将不再获得 mousedown。与接受的答案相反,您不需要调用 stopPropagation ,除非它是您需要的。即使取消,该事件也会正常传播。浏览器会忽略它,但你的钩子(Hook)仍然可以工作。

Mozilla agrees with me关于这个:

calling preventDefault() on a touchstart or the first touchmove event of a series prevents the corresponding mouse events from firing

编辑:我刚刚又读了一遍问题,你说你已经这样做了,它没有修复 Android 默认浏览器。不确定接受的答案有什么帮助,因为它基本上做同样的事情,只是以更复杂的方式和一个事件传播错误(touchstart 不传播,但 click 传播)

关于javascript - 如何绑定(bind) Mousedown 和 Touchstart,但不响应两者?安卓、jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655919/

相关文章:

java - 如何知道用户何时完成输入?

java - 处理导出的可执行引用

android - 如何让gradle使用所有Android Studio项目的缓存依赖项?

c# - javascript 对象加载 C# 字典中的值(并将其作为字典 <string,string> 传递)

java - 线程返回值永久检查

javascript - 如何检查 URL 末尾是否有特定字符串

javascript - 淡化图像循环 jQuery

javascript - 从 javascript 对象获取列表

javascript - "a or b"正则表达式中的非捕获括号(运算符优先级)

使用正斜杠与连字符的 Javascript 日期