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

Захват Click on DOM/HTML/BODY на iPad

Я использую jQuery для обнаружения щелчка по DOM - или каждый щелчок.

$(document).click(function(){
   alert("Click :-)");
});

Это работает очень хорошо в каждом браузере, кроме Safari для iPad/iPhone. Я также попытался применить событие к элементу html или body - никак. Как определить общий клик на iPad/iPhone?

С уважением, Джим

4b9b3361

Ответ 1

Как я нашел на http://www.danwellman.co.uk/fixing-jquery-click-events-for-the-ipad/, вы можете протестировать пользовательский агент и использовать touchstart или щелкнуть в зависимости от платформы

var ua = navigator.userAgent,
        event = (ua.match(/iPad/i)) ? "touchstart" : "click";

$(document).on(event, function (ev) {
    ...
});

Ответ 2

Эти ответы заставили меня начать в правильном направлении (сначала google для "jquery document.on ipad" ), поэтому спасибо за это, но заимствование из этого ответа я упростил это примерно так:

$(document).on("click touchstart", function (ev) {
    ...
});

Это, очевидно, приведет к нежелательным результатам, если платформа (например, Android или Windows Phone или что-то еще) поддерживает как щелчок, так и touchstart в пузыре события, поэтому, если кто-нибудь знает, что дайте мне знать (и я исправлю свой код и удалю это ответ!:)

Ответ 3

Вместо этого вы можете использовать событие touchstart.

Ответ 4

Я использовал это:

jQuery(document).on('touchstart',function(event){
    //your code here
         });

- также вместо "документа" вы можете привязываться к любому объекту DOM.

и это (из другого ответа на форум):

var body = document.getElementsByTagName('body')[0];

 if ("ontouchstart" in window) {

        body.ontouchstart = function(){
   //your code here
         };     
                 };

-again, вам не нужно использовать "тело", вы можете назначить переменную объекту по классу следующим образом:

var dd = document.getElementsByClassName('infoAction')[0]; 

Ответ 5

$('html').click(function(){
   alert("Click :-)");
});

Это работает для меня, я тестировал его сейчас.

Даже без содержания на странице, где бы вы ни нажимали на странице.

Ответ 6

Вы можете присоединить прослушиватель кликов к основному элементу-оболочке (например, div, который охватывает все компоненты вашей страницы).

Ответ 7

<body><div onclick="void(0)">
... your page tags ...
</div></body>

Существует незначительная разница с поведением других браузеров: объект документа будет показывать события кликов только для тегов, расположенных внутри раздела "... теги вашей страницы...".

Другими словами, предположим, что ваши теги html и body имеют желтый цвет фона, а их дочерние теги имеют красный цвет фона. Объект документа будет получать клики только по красным областям. Это обычно не является серьезным недостатком.

Протестировано только на iPhone 3