2015-12-27 5 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, вы работаете в ситуации, когда действие касания должно фактически отличаться от действия щелчка? Если это не зависит от времени до менее 300 мс, вы можете просто выполнить метод в событиях клика вместо –

ответ

0

У вас связаны оба события с одним и тем же элементом?

Если это так, ошибка не из-за кипящий happening.while мыши нажмите несколько событий будут происходить как mousedown, touchstart ..etc.so, если вы хотите, чтобы избежать МЫШЬЮ события встречающимся добавить preventDefault() в мыши вниз. Это отключит событие щелчка мыши по умолчанию на этом элементе.

+0

Мне нужно обрабатывать случаи: элемент – Alyona

+0

@ user3629015 может быть более конкретным для случаев? – sundar

+0

Мне нужно обрабатывать случаи: 1.) элемент будет щелкнут мышью на ПК. 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' на начальном событии] (https://developer.mozilla.org/en-US/docs/Web/API/Touch_events#Additional_tips), который нарушает цепочку «действие по умолчанию - это запустить событие щелчка», , Я не понимал, что они были связаны цепью; подумал, что одно действие заставило обоих произойти независимо –

Смежные вопросы