我将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事件在冒泡到身体之前就停止了。
答案 0 :(得分:7)
我知道这已经很老了,但是当我遇到同样的问题时,我仍然设法将其挖掘出来。
简而言之,iOS Safari中的鼠标事件不会冒泡到document.body
,除非iOS Safari认为事件目标是可点击的元素。
可点击元素是以下之一:
事件的目标元素是链接或表单字段。
目标元素或其任何祖先(但不包括
<body>
)都为任何鼠标事件设置了显式事件处理程序。此事件处理程序可能是一个空函数。- 醇>
目标元素或其任何祖先(包括文档)都有一个游标:指针CSS声明。
(引自here,强调我的。)
可能的修复包括:
cursor: pointer
添加到任何不符合描述的元素。 document.body
以下一级。