Jay*_*Lin 3 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事件在它冒泡到身体之前就停止了.
小智 8
我知道这已经很老了,但是当我遇到同样的问题时,我仍然设法把它挖出来.
简而言之,document.body除非iOS Safari认为事件目标是可点击元素,否则iOS Safari中的鼠标事件不会起泡.
可点击元素是以下之一:
事件的目标元素是链接或表单字段.
目标元素,或任何其祖先多达但不包括的
<body>,具有明确的事件处理程序的任何鼠标事件的设置.此事件处理程序可能是一个空函数.目标元素或其任何祖先(包括文档)都有一个游标:指针CSS声明.
(引自这里,强调我的.)
一个简单的解决方法是添加cursor: pointer到任何不符合此描述的元素.如果由于某种原因这不是一个选项,您可以向目标添加no-op事件处理程序或处理下面一级的单击document.body.