2015-11-10 10 views
6

Sto sviluppando un'applicazione JavaScript che deve essere eseguita su IE11 e Edge. Nel IE11, la catena di eventi che sto vedendo (copiato da https://patrickhlauke.github.io/touch/tests/results/) è la seguente:Previene il clic quando si utilizzano gli eventi del puntatore in IE11?

pointerover> mouseover> pointerenter> mouseenter> pointerdown> mousedown> (pointermove> MouseMove) +> pointerup> mouseup> (lostpointercapture)> pointerout> mouseout> pointerleave> mouseLeave> Focus> cliccare

l'applicazione è già predisposto per gestire gli eventi del mouse e il tatto, così io chiamo preventDefault() su tutti gli eventi del puntatore per annullare la evento del mouse corrispondente. Sfortunatamente, il clic arriva alla fine e causa problemi. C'è qualche modo per disabilitare l'evento click da sparare alla fine?

+2

provare ad aggiungere 'pointer-events: none' – maioman

+0

Aggiunta di eventi puntatore: nessuno sembra disabilitare tutto. Non sono sicuro che sia ciò che dovrebbe succedere, ma sfortunatamente ho bisogno degli eventi pointer (li abbiamo polifattati e trattati come eventi touch nei nostri widget). Devo mantenere i puntatori, ma ignorare il clic alla fine della catena. –

risposta

0

Sto usando jQuery Pointer Events Polyfill (https://github.com/jquery/PEP) per utilizzare l'evento "pointerup" sui browser Webkit e ho riscontrato un problema simile. Nel mio caso, ho dovuto impedire che un collegamento venisse seguito.

Ho risolto il problema aggiungendo un "click" listener di eventi subito dopo l'attivazione di "pointerup", quindi impedendo l'evento "click" e rimuovendo il suo listener. In questo modo:

var myLink = document.getElementsByClassName("myLink")[0]; 

myLink.addEventListener("pointerup", handleLinkPress); 

function handleLinkPress(evt) { 
    // do something here... 

    evt.target.addEventListener("click", unfollowLink); 

    function unfollowLink(evt) { 
     evt.preventDefault(); 
     evt.target.removeEventListener("click", unfollowLink); 
    } 
} 
Problemi correlati