2015-02-19 12 views
19

In einer Webanwendung muss ich das Standard-Callout deaktivieren, das mobile Browser beim Berühren und Halten ("langes Tippen") auf einem Touch-Ziel wie <img> oder einem Link anzeigen.Callout deaktivieren (Kontextmenü) auf Android

Ich benutze bereits -webkit-touch-callout: none;, die auf iPhone und iPad funktioniert, aber scheint nicht auf Android zu funktionieren (getestet auf Android 4.4).

This post von der W3-Mailingliste schlägt vor, einen Listener für das Ereignis "contextmenu" in Javascript hinzuzufügen und e.preventDefault() aufzurufen. Dies scheint auch nicht zu funktionieren.

Irgendwelche Vorschläge?

Antwort

4

Sie können versuchen, dies zu tun:

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

Ich hoffe, dass dies nützlich ...

Doc oncontextmenu

+0

Wie in meiner Frage angegeben, habe ich dies bereits versucht und es funktioniert nicht. – Grodriguez

+0

Sie haben nicht über die StopPropagation gesprochen. – Zagonine

+0

Welchen Unterschied macht es in diesem Zusammenhang? Ich versuche, die Standard-Browser-Aktion zu verhindern, nicht zu verhindern, dass das Ereignis sprudelt. – 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>
Es sollte die Arbeit an 1.6 ("Donut sein ") oder höher. hoffe es wird helfen.

+1

Dies deaktiviert alle Ereignisse. Ich muss Kontextmenüs auf Touch-Zielen deaktivieren, aber diese sollten immer noch erreichbar sein. – Grodriguez

Verwandte Themen