Поймать событие Click on DOM / HTML / BODY на iPad - PullRequest
16 голосов
/ 18 июня 2011

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

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

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

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

Ответы [ 7 ]

20 голосов
/ 28 февраля 2012

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

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

$(document).on(event, function (ev) {
    ...
});
7 голосов
/ 02 января 2014

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

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

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

5 голосов
/ 25 января 2013

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

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
         };     
                 };

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

var dd = document.getElementsByClassName('infoAction')[0]; 
4 голосов
/ 31 января 2012

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

2 голосов
/ 06 октября 2011

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

2 голосов
/ 18 июня 2011
$('html').click(function(){
   alert("Click :-)");
});

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

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

1 голос
/ 04 марта 2015
<body><div onclick="void(0)">
... your page tags ...
</div></body>

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...