2015-12-27 83 views
0

我正在尝试处理触摸/鼠标事件。所以,我创建了这个代码:在Firefox中停止冒泡事件

myObject.addEventListener("touchstart", function(e){ 
    e.stopPropagation(); 
    e.preventDefault(); 
    console.log("Touched"); 
    mouseTouchDown(e); 
}); 
myObject.addEventListener("mousedown", function(e){ 
    console.log("Clicked"); 
    mouseTouchDown(e); 
}); 
function mouseTouchDown(e){ 
console.log("Some function.");}; 

我想停止触摸事件的冒泡,所以点击后不会被解雇。它可以在Chrome上运行,但是在Firefox上我可以在控制台上运行:

Touched 
Clicked 

如何在触摸事件后停止鼠标点击触发?

我试图返回false,但它不起作用。

+0

虽然这看起来像一个FF错误,你是否在触摸的动作实际上不同于点击动作的情况下工作?如果它对300ms以下时间不敏感,那么您可以在点击事件上执行该方法,而不是同时执行这两个 –

回答

0

你是否在同一个元素上附加了两个事件?

如果是这样的错误是因为冒泡happening.while鼠标点击几件大事将发生像mousedown的情况并非如此,touchstart ..etc.so如果你想避免鼠标点击事件存在的在鼠标加入preventDefault()下来。这将禁用在该元素上发生的默认鼠标点击事件。

+0

我需要处理的情况:元素 – Alyona

+0

@ user3629015你可以更具体的案件? – sundar

+0

我需要处理的情况:1.)元素将在PC上用鼠标点击。 2.)元素将触及任何触摸设备。这就是为什么我附加了2个事件,鼠标和触摸。一切工作正常,简单的鼠标点击,但触摸事件也触发鼠标点击。所以根据这篇文章http://www.html5rocks.com/en/mobile/touchandmouse/我添加了e.preventDefault();它在Chrome中很好地工作,但不幸的是不在FF中。让我有点困惑。 – Alyona

1

这看起来像在浏览器中的错误,你的代码看起来很好。

参见:https://bugzilla.mozilla.org/show_bug.cgi?id=977226
你用什么操作系统/ Firefox版本测试?

+0

等待,因此操纵_touch event_会影响类似的_click event_? –

+0

@PaulS。您可以防止触摸事件触发点击事件,请参阅:https://developer.mozilla.org/en-US/docs/Web/API/Touch_events#Tracking_new_touches – lleaff

+0

太棒了,但它看起来像是[特别是' .preventDefault' on the initial event](https://developer.mozilla.org/en-US/docs/Web/API/Touch_events#Additional_tips),这违反了“默认操作是触发点击事件”链。 。我没有意识到这些被链接在之前;认为一个动作导致两个独立发生 –