2015-02-19 8 views
19

In un'applicazione Web, è necessario disattivare il richiamo predefinito mostrato dai browser per dispositivi mobili quando si tocca e si tiene premuto ("tocco lungo") su un target tattile, ad esempio <img> o un collegamento.Disattivare il callout (menu di scelta rapida) su Android

Sto già utilizzando -webkit-touch-callout: none; che funziona bene su iPhone e iPad, ma non sembra funzionare su Android (testato su Android 4.4).

This post dalla mailing list W3 suggerisce di aggiungere un listener per l'evento "contextmenu" in Javascript e chiamando e.preventDefault(). Anche questo non sembra funzionare.

Qualche suggerimento?

risposta

4

Si può provare a fare questo:

window.oncontextmenu = function(event) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    return false; 
}; 

Spero che questo è utile ...

Doc oncontextmenu

+0

Come indicato nella mia domanda, ho già provato questo e non funziona. – Grodriguez

+0

Non hai parlato di stopPropagation. – Zagonine

+0

Che differenza fa in questo contesto? Sto tentando di impedire l'azione predefinita del browser, non di impedire che l'evento esploda. – Grodriguez

0


 

 
<!DOCTYPE html> 
 
    <html> 
 
    <head> 
 
     <script> 
 
     function absorbEvent_(event) { 
 
      var e = event || window.event; 
 
      e.preventDefault && e.preventDefault(); 
 
      e.stopPropagation && e.stopPropagation(); 
 
      e.cancelBubble = true; 
 
      e.returnValue = false; 
 
      return false; 
 
     } 
 
    
 
     function preventLongPressMenu(node) { 
 
      node.ontouchstart = absorbEvent_; 
 
      node.ontouchmove = absorbEvent_; 
 
      node.ontouchend = absorbEvent_; 
 
      node.ontouchcancel = absorbEvent_; 
 
     } 
 
    
 
     function init() { 
 
      preventLongPressMenu(document.getElementById('doodle')); 
 
     } 
 
     </script> 
 
    </head> 
 
    <body onload="init()"> 
 
     <img id="doodle" src="http://www.google.com/logos/doodles/2015/spain-elections-2015-5652792221892608-hp2x.jpg" width="400"> 
 
    </body> 
 
    </html>
Dovrebbe essere lavoro su 1.6 ("Donut ") o sopra. spero che possa essere d'aiuto

+1

Disabilita tutti gli eventi. Devo disabilitare i menu contestuali sui touch target, ma questi dovrebbero comunque essere intoccabili. – Grodriguez