如何同时绑定Mousedown和Touchstart,但两者都不响应?安卓、JQuery

2024-01-02

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

看起来像这样

 $("#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取消活动,根据规格 https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault

You get 触摸启动,但是一旦你取消它,你就不再得到鼠标按下。与接受的答案所说相反,您不需要打电话stopPropagation除非这是你需要的东西。即使取消,事件也会正常传播。浏览器会忽略它,但你的钩子仍然有效。

Mozilla 同意我的观点 https://developer.mozilla.org/en-US/docs/Web/API/Touch_events#Additional_tips关于这一点:

在 touchstart 或系列中的第一个 touchmove 事件上调用 PreventDefault() 会阻止触发相应的鼠标事件

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何同时绑定Mousedown和Touchstart,但两者都不响应?安卓、JQuery 的相关文章

随机推荐