iPhone Safari游戏中的奇怪点击事件泡泡,它在冒泡到document.body之前停止

时间:2013-08-30 02:53:54

标签: javascript html5 mobile-safari mobile-website

我将click事件绑定为document.body.onclick = function(){alert(“aaa”)};

无论我点击什么元素,它都可以在IOS上的android或chrome上做得很好。 但是在点击除a和img元素之外的元素时,它不会触发iPhone Safari。

但它可以在绑定touchstart事件时冒泡到正文。

最后,我必须添加到div(#main)以包含我的所有元素,然后在此div上绑定委托对象。

document.querySelector(“#main”)。onclick = function(){alert(“aaa”)}

所以我在徘徊为什么onclick事件在冒泡到身体之前就停止了。

1 个答案:

答案 0 :(得分:7)

我知道这已经很老了,但是当我遇到同样的问题时,我仍然设法将其挖掘出来。

简而言之,iOS Safari中的鼠标事件不会冒泡到document.body,除非iOS Safari认为事件目标是可点击的元素。

可点击元素是以下之一:

  
      
  1. 事件的目标元素是链接或表单字段。

  2.   
  3. 目标元素或其任何祖先(但不包括 <body>)都为任何鼠标事件设置了显式事件处理程序。此事件处理程序可能是一个空函数。

  4.   
  5. 目标元素或其任何祖先(包括文档)都有一个游标:指针CSS声明。

  6.   

(引自here,强调我的。)

可能的修复包括:

  • cursor: pointer添加到任何不符合描述的元素。
  • 向目标添加无操作事件处理程序。
  • 将点击次数设为document.body以下一级。