繁体   English   中英

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

[英]Catching the Click on DOM/HTML/BODY event on the iPad

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

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

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

最好的问候,吉姆

正如我在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) {
    ...
});

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

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

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

我用过这个:

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,你不必使用'body'你可以通过这种方式为一个对象分配一个变量:

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

您可以使用touchstart事件。

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

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

即使在页面上没有任何内容,无论您在何处单击该页面。

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

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

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

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

仅在iPhone 3上测试过

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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