Ho cercato di capire come diversi eventi del puntatore (tocco, mouse) vengono attivati in vari browser/su vari dispositivi. A tal proposito ho scritto una piccola pagina web per testare gli eventi http://tstr.29pixels.net.Differenza tra gli eventi del puntatore che si legano in jQuery e plain Javascript
Alcune settimane più tardi mi sono imbattuto nella pagina di test degli ascoltatori di eventi di Mozilla allo http://mozilla.github.io/mozhacks/touch-events/event-listener.html, che ha prodotto risultati molto diversi (ho visto eventi che non venivano visualizzati nel mio strumento di test originale).
Entrambi i siti Web utilizzano uno stile diverso di eventi vincolanti, quindi mi piacerebbe sapere, qual è la differenza nell'associazione di questi eventi?
Ad esempio, prendi il tuo tablet/smartphone con Chrome e prova a fare clic sul pulsante sul mio web. Nella maggior parte dei casi vengono attivati due eventi: touchstart e touchend (con un tocco occasionale). Quindi prova lo strumento di Mozilla. C'è molto di più (incluso anche il clic).
mio vincolante: vincolante
$("#button").on('mouseenter mouseleave ... mousemove click', function(e){
...
}
Mozilla:
var events = ['MSPointerDown', 'MSPointerUp', ... , 'MSPointerCancel'];
var b = document.getElementById('button');
for (var i=0; i<events.length; i++) {
b.addEventListener(events[i], report, false);
}
Queste sono solo le parti più importanti, completa di codice javascript è scritto a destra nella pagina di indice di entrambi i siti (non è lungo).
Se qualcuno potesse portare un po 'di luce in questa faccenda per me, sarei molto grato.
Grazie! Ho rimosso 'e.preventDefault()' (e aggiornato un elenco di eventi un po ') e ora ho gli stessi risultati dello strumento Mozilla. Devo leggere un po 'di più sul comportamento di 'e.preventDefault() però. –
@ PavelAntolík Purtroppo al momento non conosco un riferimento che descriva come 'preventDefault' influisce su altri eventi. "[...] ma, di conseguenza, impedirà anche che si verifichino altri eventi. Potrebbe essere un po 'fuorviante. Potrebbe impedire un comportamento del browser e questo comportamento potrebbe avere altri eventi come risultato. L'evento "click" sui dispositivi touch è un evento emulato e, se si impedisce un evento touch, viene impedito il comportamento predefinito di emulazione del "clic". Ma sinceramente non so se l'emulazione è coperta da uno standard, né se 'preventDefault' dovrebbe impedirlo. –