我已将点击事件绑定为 document.body.onclick = function(){alert("aaa")};
无论我点击什么元素,它在 Android 上或 IOS 上的 Chrome 上都表现良好。
但在 iPhone safari 上单击除 a 和 img 元素之外的元素时不会触发它。
但它可以在绑定 touchstart 事件时冒泡到 body。
最后,我必须添加到 div(#main) 以包含我的所有元素,然后将委托对象绑定到该 div 上。
document.querySelector("#main").onclick = function(){alert("aaa")}
所以我想知道为什么 onclick 事件在它冒泡到主体之前停止。
我知道这已经很老了,但当我遇到同样的问题时,我仍然设法将其挖掘出来。
简而言之,iOS Safari 中的鼠标事件不会冒泡到document.body
除非 iOS Safari 认为事件目标是可点击元素。
可点击元素是以下元素之一:
-
事件的目标元素是链接或表单字段。
-
目标元素或其任何祖先元素但不包括 the <body>
,为任何鼠标事件设置了显式事件处理程序。该事件处理程序可能是一个空函数。
-
目标元素或其任何祖先元素(包括文档)都有一个cursor:pointer CSS 声明。
(引自here http://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html,强调我的。)
可能的修复包括:
- Add
cursor: pointer
任何不符合描述的元素。
- 将无操作事件处理程序添加到目标。
- 处理下一级的点击
document.body
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)