Подтвердить что ты не робот

Отключить выноску (контекстное меню) на Android

В веб-приложении мне нужно отключить выноски по умолчанию, которые показывают мобильные браузеры при касании и удержании ( "длинные нажатия" ) на целевую мишень, например, <img> или ссылку.

Я уже использую -webkit-touch-callout: none;, который отлично работает на iPhone и iPad, но, похоже, не работает на Android (протестирован на Android 4.4).

Этот пост из списка рассылки W3 предлагает добавить слушателя к событию "contextmenu" в Javascript и вызвать e.preventDefault(). Это тоже не работает.

Любые предложения?

4b9b3361

Ответ 1

Вы можете попробовать:

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

Надеюсь, это полезно...

Doc oncontextmenu

Ответ 2

   

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