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

时间:2011-06-18 17:15:11

标签: javascript ipad safari jquery

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

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

除了适用于iPad / iPhone的Safari之外,每个浏览器的效果都相当不错。我也尝试在html或body元素上应用事件 - 没办法。如何检测iPad / iPhone上的常见点击?

祝你好运, 吉姆

7 个答案:

答案 0 :(得分: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) {
    ...
});

答案 1 :(得分:7)

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

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

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

答案 2 :(得分:5)

我用过这个:

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

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

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

答案 3 :(得分:4)

您可以改为使用touchstart事件。

答案 4 :(得分:2)

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

这适合我,我现在测试了。

即使在页面上没有任何内容,无论您在哪个页面上单击,都可以使用。

答案 5 :(得分:2)

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

答案 6 :(得分:1)

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

与其他浏览器行为存在细微差别:文档对象仅针对位于&#34; ...您的页面标记内的标记提供点击事件...&#34;部分。

换句话说,假设您的html和body标签具有黄色背景颜色,并且其子标签具有红色背景颜色。 文档对象仅接收红色区域的点击。这通常不是一个严重的缺点。

仅在iPhone 3上测试