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

Как предотвратить события щелчка на теле документа (возможно, ошибка в Кордове?)

Я новичок, пытающийся разработать игру для мобильных телефонов с помощью Kinetic Js и "buildgap build". Я испытываю проблему, которую я не знаю, как обращаться. Я сделал несколько тестов:

  • Я только что ввел этот код здесь в свой index.html и отправил код в конструкцию phonegap, который создал файл apk из html-кода. Приложение работает отлично, но если вы немного поиграете, вы можете увидеть нежелательное поведение: вся "сцена" может быть нажата прикосновением и когда это произойдет (на самом деле это нелегко сделать это специально, но это происходит) вы услышите стандартный звук щелчка ОС Android, и вы увидите всю выделенную область в течение секунды. Так же, как если бы вы были в браузере, и вы нажали на ссылку.

  • Я скомпилировал (с помощью сборки phonegap) симулятор компаса, связанный здесь, он работает, но когда вы нажимаете на картинку компаса, вы вызываете звук щелчка. Это нежелательный эффект, которого нет, если вы запустите его в браузере/эмуляторе.

  • Я просто положил png-изображение в тело, избегая холста и KineticJs. Я также не добавил никаких script. В этом случае при нажатии кнопки нет события клика. Но если я добавлю

    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
    

    (даже без добавления каких-либо script), затем снова нажмите "Добавить событие". Если я удалю кого-либо из двух строк, событие click исчезнет. Также, если я добавлю

    <script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.5.4.min.js"></script>
    

    снова тело можно щелкнуть, производя основные моменты и щелкнув звук. (Я все еще говорю о скомпилированном приложении с билд-сайтом).

Я попытался заменить <body> на <body onmousedown="return false;">, но не помог. Я также попытался с помощью $("#object").click( function () {return false;}) с элементом div холста, рисунка и тела, тоже не помог. Я искал советы, чтобы сделать привязки не кликабельными, чтобы увидеть, могут ли они применяться, но я не нашел ничего полезного.

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

Обновление: Еще одна попытка, которая не решила: stage.off('tap click mousedown touchstart touchend dbltap');.

4b9b3361

Ответ 1

Вы пробовали это?

stage.on('tap touchstart touchend', function() {
  return false;
});

Это также может помочь:

canvas {
  /*-webkit-tap-highlight-color: transparent; Some users reported this worked for them, although rgba(0,0,0,0); worked for the asker*/
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  outline: none;
}

Вот быстрая ссылка на webkit-touch-callout, я не уверен, что это поможет вашей ситуации... http://phonegap-tips.com/articles/essential-phonegap-css-webkit-touch-callout.html

РЕДАКТИРОВАТЬ: Похоже, что автор разрыва телефона предлагает -webkit-tap-highlight-color: rgba(0, 0, 0, 0); предотвратить выбор ссылок. Источник здесь: https://github.com/phonegap/phonegap-start/blob/master/www/css/index.css

Ответ 2

Чтобы отключить нажатие на тег привязки, вы можете просто использовать некоторые трюки css, например, у вас есть якорный тег с классом "notclickable", затем добавьте css,

.notclickable {
    pointer-events: none;
    cursor: default;
    opacity:0.7;
}

Теперь вы можете сделать тэг привязки отключенным, добавив этот класс

или вы можете попробовать это, чтобы предотвратить щелчок,

$('.notclickable').live('click', function(event){
    event.preventDefault();
});

Надеюсь, что это поможет.