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)
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