Захват Click on DOM/HTML/BODY на iPad
Я использую jQuery для обнаружения щелчка по DOM - или каждый щелчок.
$(document).click(function(){
alert("Click :-)");
});
Это работает очень хорошо в каждом браузере, кроме Safari для iPad/iPhone. Я также попытался применить событие к элементу html или body - никак. Как определить общий клик на iPad/iPhone?
С уважением,
Джим
Ответы
Ответ 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