ios绑定click事件到body不能生效

在ios上给window,document,body 绑定click事件时,点击body不会触发,这bug是由safari的事件解析机制导致,无法修复,但是有多种手段可以规避。

  • 改用touch事件(如果是弹出层的话,会有点透问题)
  • 如何避免bug触发:不要委托到body结点上,委托到任意指定父元素都可以,或者使用原生具有该事件的元素,如使用click事件触发就用a标签包一层。
  • 已触发如何修补:safari对事件的解析非常特殊,如果一个事件曾经被响应过,则会一直冒泡(捕获)到根结点,所以对于已大规模触发的情况,只需要在body元素的所有子元素绑定一个空事件就好了,如:
    ("body > *").on("click", function(){};);
    
    可能会对性能有一定影响,但是使用方便。

参考:ios-safari-bug-总结


Copyright ©2016-2018 红世幻境 All Rights Reserved

浙ICP备15041976号-2 联系邮箱: shana@tenshi.cc

Top