Disabling the context menu on long taps on Android

I would like to disable the context menu that appears after a long tap (touch and hold) on images in my web application. I've seen posts with different ideas how to do it, but none of them seem to work for me.

Is there a way to do this on Android via HTML/CSS/Javascript?

53
задан Janusz 8 August 2010 в 20:22
поделиться

3 ответа

Это должно работать на 1.6 или новее (если я правильно помню). Я не верю, что есть обходной путь для версии 1.5 или более ранней.

<!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('theimage'));
    }
  </script>
</head>
<body onload="init()">
  <img id="theimage" src="http://www.google.com/logos/arthurboyd2010-hp.jpg" width="400">
</body>
</html>
33
ответ дан 7 November 2019 в 08:16
поделиться
<a id="moo" href=''> </a>

<script type="text/javascript">
    var moo = document.getElementById('moo');

    function handler(event) {
        event = event || context_menu.event;

        if (event.stopPropagation)
            event.stopPropagation();

        event.cancelBubble = true;
        return false;
    }

    moo.innerHTML = 'right-click here';

    moo.onclick = handler;
    moo.onmousedown = handler;
    moo.onmouseup = handler;
</script>

Захватить событие onContextMenu и вернуть false в обработчике событий.

Вы также можете зафиксировать событие щелчка и проверить, какая кнопка мыши запустила событие с помощью event.button, в любом случае в некоторых браузерах.

0
ответ дан 7 November 2019 в 08:16
поделиться

Через необработанный javascript нет событий, которые вызываются для контекстного меню. Возможно, в мире Java есть что-то ... На самом деле существует несколько проблем, связанных с событиями javascript (например, неправильная работа фокуса) в Android webkit.

-3
ответ дан 7 November 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: