我将一个点击事件绑定为document.body.onclick=function(){alert(“aaa”)};
无论我点击什么元素,它在Android或IOS上的chrome上都很好。但在iPhone safari上,除了a和img元素外,它不会在单击元素时触发。
但在绑定touchstart事件时,它可能会冒泡到身体。
最后,我必须添加到div(#main)来包含我的所有元素,然后在这个div上绑定委托对象。
document.querySelector(“#main”).onclick=function(){alert(“aaa”)}
所以我想知道为什么onclick事件在它冒泡到身体之前就停止了。
我知道这是相当古老的,但当我遇到同样的问题时,我还是设法把它挖了出来。
简而言之,iOS Safari中的鼠标事件不会出现在document.body
中,除非iOS Safari认为事件目标是可单击的元素。
Clickable元素是以下元素之一:
>
事件的目标元素是链接或表单字段。
目标元素,或其任何祖先,直到但不包括
目标元素或其任何祖先(包括文档)都有一个游标:指针CSS声明。
(这里引用,我的重点。)
可能的修复措施包括:
将游标:指针添加到任何不符合描述的元素。
- 向目标添加一个no-op事件处理程序。
- 在
document.body
下面处理点击。
注意 目前仅 Weex Native(Android 和 iOS)支持,web 端 暂时不支持此项特性. 如果你是个 web 开发者,你大概对浏览器事件冒泡机制已经很熟悉了,而且可能认为 Weex 默认会支持事件冒泡。然而,Weex 在 0.13 之前是不支持这一特性的,在 0.13 版本,Weex 提供了这项支持。 概念 以点击事件为例,比如一个点击事件发生在某个 <video> 元素上,这个元
我有一个人员搜索脚本,在您键入时显示建议。结果的结构大致如下: 由于人员列表会随着您的键入而改变,到目前为止,我使用jQuery的live()函数自动将click事件绑定到所有的.person元素。这是不推荐的和糟糕的做法,所以我正在尝试更新代码。 我觉得我需要这样的东西: 但是我想更多地了解一下如何在vanilla JavaScript中处理这个问题。我以为当点击带有click事件的项的子项时,
问题内容: 我有一个复选框,希望对click事件执行一些Ajax操作,但是该复选框也位于容器内,它具有自己的单击行为,当单击该复选框时,我不想运行该行为。此示例说明了我要执行的操作: 但是,我不知道如何在不导致默认点击行为(复选框变为选中/未选中)的情况下停止事件冒泡。 以下两项都停止了事件冒泡,但也没有更改复选框状态: 问题答案: 更换 与 event.stopPropagation() 停止将
本文向大家介绍理解jquery事件冒泡,包括了理解jquery事件冒泡的使用技巧和注意事项,需要的朋友参考一下 一、什么是jquery事件冒泡 在很多教材或者手册都可能会涉及到事件冒泡的概念,老手来说这当然是最基本的概念,但往往对于初学者可能比较陌生或者说从来没有听说过。下面就结合代码实例来简单介绍一下什么是事件冒泡。 代码实例如下: 在以上代码中,我们可能只想点击锚点后弹出“我是third”,但
本文向大家介绍详解javascript事件冒泡,包括了详解javascript事件冒泡的使用技巧和注意事项,需要的朋友参考一下 事件是javascript中的核心内容之一,在对事件的应用中不可避免的要涉及到一个重要的概念,那就是事件冒泡,在介绍事件冒泡之前,先介绍一下另一个重要的概念事件流: 一.什么是事件流: 文档对象模型(DOM)是一个树形结构,可以形象的用下图表示。 如果一个html元素触发
主要内容:事件捕获,事件冒泡,阻止事件捕获和冒泡,阻止默认操作在 JavaScript 中,我们将事件发生的顺序称为“事件流”,当我们触发某个事件时,会发生一些列的连锁反应,例如有如下所示的一段代码: 如果给每个标签都定义事件,当我们点击其中的 标签时,会发现绑定在 和 标签上的事件也被触发了,这到底是为什么呢?为了解答这一问题,微软和网景两公司提出了两种不同的概念,事件捕获与事件冒泡: 事件捕获:由微软公司提出,事件从文档根节点(Document 对象)流