在iPad上捕获点击DOM/HTML/BODY事件

Jim*_*Jim 16 javascript safari jquery ipad

我正在使用jQuery来检测DOM上的点击 - 或者让我们点击每一次.

$(document).click(function(){
   alert("Click :-)");
});
Run Code Online (Sandbox Code Playgroud)

除了适用于iPad/iPhone的Safari之外,每个浏览器都能很好地工作.我也尝试在html或body元素上应用事件 - 没办法.如何检测iPad/iPhone上的常见点击?

最好的问候,吉姆

gui*_*ouz 20

正如我在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) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

  • 2016年没有更好的解决方案吗? (7认同)

mlh*_*Dev 7

这些答案让我开始朝着正确的方向发展(首先谷歌为"jquery document.on ipad"),所以非常感谢,但是从这个答案中借鉴我将其简化为:

$(document).on("click touchstart", function (ev) {
    ...
});
Run Code Online (Sandbox Code Playgroud)

如果平台(如Android或Windows Phone或其他东西)支持事件泡泡中的click和touchstart,这显然会产生不良结果,所以如果有人知道让我知道(我将修复我的代码并删除此答案!: )


nam*_*ave 5

我用过这个:

jQuery(document).on('touchstart',function(event){
    //your code here
         });
Run Code Online (Sandbox Code Playgroud)

- 而不是"文档",你可以绑定到任何DOM对象.

这(来自另一个论坛答案):

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

 if ("ontouchstart" in window) {

        body.ontouchstart = function(){
   //your code here
         };     
                 };
Run Code Online (Sandbox Code Playgroud)

-again,你不必使用'body'你可以通过这种方式为一个对象分配一个变量:

var dd = document.getElementsByClassName('infoAction')[0]; 
Run Code Online (Sandbox Code Playgroud)


Bil*_*oon 2

$('html').click(function(){
   alert("Click :-)");
});
Run Code Online (Sandbox Code Playgroud)

这对我有用,我现在测试了。

甚至可以在页面上没有内容的情况下工作,无论您在页面上的任何位置单击。