简体   繁体   中英

Catching the Click on DOM/HTML/BODY event on the iPad

I'm using jQuery to detect a click on the DOM - or let's every click.

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

This works pretty good in every browser except Safari for iPad/iPhone. I've also tried to apply the event on the html or body element - no way. How to detect a common click on the iPad/iPhone?

Best regards, Jim

As I found on http://www.danwellman.co.uk/fixing-jquery-click-events-for-the-ipad/ you may test the user agent and use touchstart or click depending on the platform

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

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

These answers got me started on the right direction (first google for "jquery document.on ipad"), so thanks for that, but borrowing from this answer I simplified it to something like this:

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

This would obviously produce undesired results if a platform (like Android or Windows Phone or something) supported both click and touchstart in the event bubble, so if anyone knows that let me know (and I'll fix my code and delete this answer! :)

I have used this:

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

-also instead of "document" you can bind to any DOM object.

and this(from another forum answer):

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

 if ("ontouchstart" in window) {

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

-again, you don't have to use 'body' you can assign a variable to an object by class this way:

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

您可以使用touchstart事件。

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

This works for me, I tested it now.

Even works with no content on page, wherever you click on the page.

您可以将单击侦听器附加到主包装器元素(例如,包含页面中所有组件的div)。

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

There is a minor difference with others browsers behaviour: the document object will reveive click events only for tags located inside the "... your page tags ..." section.

In other words, suppose your html and body tags have a yellow background color, and their child tags have a red background color. The document object will receive clicks on the red areas only. This is usually not a serious drawback.

Tested on an iPhone 3 only

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM