1

В настоящее время я реализую структуру JavaScript. Здесь я хочу захватить мыши и коснуться событий на странице без нарушения обработки событий. Например:Захват событий JavaScript «молча»

DOM:

<div id='capturer' style='position: fixed, width: 100%; height: 100%'></div> 
<button id='btn'>A Button</button> 

JS (с JQuery):

$("#capturer").get(0).addEventListener("touchstart", onStart, true); 
$("#capturer").get(0).addEventListener("touchmove", onMove, true); 
$("#capturer").get(0).addEventListener("touchend", onEnd, true); 

Обнаружение жест делается с onStart, onMove и onEnd. Проблема возникает с кодом, например, как это:

$("#btn").click(function() { alert('button clicked'); }); 

Это событие никогда не будет выполнена - я бы подумал, что, не называя preventDefault или stopPropagation, сенсорный событие будет продолжать капать/пузырек и в какой-то момент запуска кнопку нажмите, но это, похоже, не так. Любые идеи почему? И любые идеи, как захватывать события, не нарушая поведения других событий?

Спасибо.

ответ

1

Если вы хотите щелкнуть по тексту, то вы можете использовать свойство-указатель-события в css, но это решение не будет захватывать любые сенсорные события на вашем элементе # capturer-Element.

jQuery("#capturer").css({"pointer-events" : "none"}); 

ПРИМЕЧАНИЕ: В этом примере вы won't получить какое-либо событие для вашего Capturer. Если вы хотите «поймать» сенсорные элементы по всему документу, вы можете попытаться захватить их на элементе body.

$("body").get(0).addEventListener("touchstart", onStart, true); 
$("body").get(0).addEventListener("touchmove", onMove, true); 
$("body").get(0).addEventListener("touchend", onEnd, true); 

В этом случае вы получите перемещение-события в течение всего контента и получить клик-событие на кнопке тоже. Вы также сохранили элемент dom.

Смежные вопросы