2015-01-05 9 views
6

sulla superficie Pro 3 con Firefox solo:

Quando si effettua un gesto strisciata con un solo dito su un elemento, il browser fire wheel eventi invece di touchmove o mousemove eventi. Come si interrompe il comportamento della ruota e si consente al singolo dito di essere sempre trattato come movimento touch/mouse?Surface Pro 3 con Firefox - Avere singoli eventi tocco grilletto touch/mouse al posto della eventi ruote

Quindi, desidero trattare un singolo passaggio come serie di mousemove o touchmove anziché come wheel eventi. Non voglio che un singolo dito scorri per scorrere la pagina se si passa sopra questo elemento. Questo è facile da fare in Chrome e IE11. Questo non sembra possibile in questo momento in Firefox. Current Penso che questo sia un bug, ma potrebbe esserci qualcosa che mi manca.

Ecco un esempio semplicistico:

http://codepen.io/simonsarris/pen/PwbdRZ

var can = document.getElementById('can'); 

can.addEventListener('mousemove', function(e) { 
    // Will never happen on the Surface Pro 3 in Firefox 
    // Will happen in IE11 though 
    console.log('mouseMove') 
}); 

can.addEventListener('touchmove', function(e) { 
    // Will never happen on the Surface Pro 3 in Firefox 
    // Will happen in Chrome though 
    console.log('touchMove') 
}); 

// Stops the window from scrolling in firefox when you swipe on the element 
// But stopping this does not allow the single touch gesture to register as mousemove or touchmove events 
can.addEventListener('wheel', function(e) { 
    console.log('wheel') 
    e.preventDefault(); 
}); 


// consider also the 'DOMMouseScroll' event, though preventing this event will not stop firefox from panning the page. 

Perché io sono la prevenzione di default in wheel, scorrendo la pagina è arrestato quando un solo dito scorrere verso l'alto o verso il basso

La finestra a scorrimento viene fermato in firefox se si scorre nella casella rossa, ma nessun evento di mouse o touchstamp verrà attivato. (ma mousemove sparerà se si fa scorrere orizzontalmente anziché verticalmente)

+0

Non ho accesso all'hardware, quindi non posso testarlo da solo, ma stai ascoltando 'touchstart'? La [pagina MDN] (https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events) sembra implicare che se si impedisce il default su di esso, * non si ottiene * gli eventi del mouse - e potrebbe essere che l'evento scroll del mouse sopprima 'touchmove'. – Jeremy

risposta

0

Gli eventi di tocco sono attualmente disabilitati nella versione desktop di Firefox (36.0.4), sebbene funzionino durante l'esecuzione di Firefox in modalità Metro o attivandoli esplicitamente tramite l'impostazione dom.w3c_touch_events.enabled. Vedere the MDN article on Touch events per ulteriori informazioni.

Problemi correlati