首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript小技能:事件

现代浏览器,默认情况下,所有事件处理程序都在冒泡阶段进行注册。 捕获阶段:浏览器检查元素最外层祖先,是否捕获阶段中注册了一个onclick事件处理程序,如果是,则运行。...然后,移动到单击元素下一个祖先元素,并执行相同操作,依此类推,直到到达实际点击元素。...冒泡阶段:浏览器检查实际点击元素是否冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行。然后移动到下一个直接祖先元素,并做同样事情,直到到达元素。...事件委托: 如果你想要在大量子元素单击任何一个都可以运行一段代码,您可以事件监听器设置在其父节点上,并让子节点上发生事件冒泡到父节点上,而不是每个子节点单独设置事件监听器。...例如,媒体记录器 API 有一个dataavailable事件,它会在录制一些音频或视频触发,并且可以用来做一些事情 (例如保存,或者回放)。

1.4K10

事件高级

DOM事件流 html标签都是相互嵌套,我们可以元素想象成一个盒子装一个盒子,document是最外面的大盒子。 当你单击一个div,同时你也单击了div元素,甚至整个页面。 ​...比如:我们给页面一个div注册了单击事件,当你单击了div,也就单击了body,单击了html,单击了document。 ?...事件对象兼容性处理 事件对象本身获取存在兼容问题: 标准浏览器是浏览器给方法传递参数,只需要定义形参 e 就可以获取到。...常情况下terget 和 this是一致, 但有一种情况不同,那就是事件冒泡(父子元素有相同事件单击元素,父元素事件处理函数也会被触发执行), 这时候this指向是父元素,因为它是绑定事件元素对象...说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码元素事件执行。 生活代理: ? js事件代理: ?

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

事件高级

DOM事件流 html标签都是相互嵌套,我们可以元素想象成一个盒子装一个盒子,document是最外面的大盒子。 当你单击一个div,同时你也单击了div元素,甚至整个页面。 ​...比如:我们给页面一个div注册了单击事件,当你单击了div,也就单击了body,单击了html,单击了document。 ?...事件对象使用 事件触发发生就会产生事件对象,并且系统会以实参形式传给事件处理函数。 所以,事件处理函数声明1个形参用来接收事件对象。 ?...事件对象兼容性处理 事件对象本身获取存在兼容问题: 标准浏览器是浏览器给方法传递参数,只需要定义形参 e 就可以获取到。...常情况下terget 和 this是一致, 但有一种情况不同,那就是事件冒泡(父子元素有相同事件单击元素,父元素事件处理函数也会被触发执行), 这时候this指向是父元素,因为它是绑定事件元素对象

1.5K41

事件高级

比如我们给一个div 注册了点击事件:       事件冒泡: IE 最早提出,事件开始由最具体元素接收,然后逐级向上传播到到 DOM 最顶层节点过程。...事件对象使用 事件触发发生就会产生事件对象,并且系统会以实参形式传给事件处理函数。 所以,事件处理函数声明1个形参用来接收事件对象。...: 标准浏览器是浏览器给方法传递参数,只需要定义形参 e 就可以获取到。...常情况下terget 和 this是一致, 但有一种情况不同,那就是事件冒泡(父子元素有相同事件单击元素,父元素事件处理函数也会被触发执行),  这时候this指向是父元素,因为它是绑定事件元素对象...什么是事件委托 把事情委托给别人,代为处理。 事件委托也称为事件代理, jQuery 里面称为事件委派。 说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码元素事件执行。

1.2K10

「Web编程API」- 03

DOM事件流 html标签都是相互嵌套,我们可以元素想象成一个盒子装一个盒子,document是最外面的大盒子。 当你单击一个div,同时你也单击了div元素,甚至整个页面。...比如:我们给页面一个div注册了单击事件,当你单击了div,也就单击了body,单击了html,单击了document。 当时2大浏览器霸主谁也不服谁!...所以,事件处理函数声明1个形参用来接收事件对象。 事件对象兼容性处理 事件对象本身获取存在兼容问题: 标准浏览器是浏览器给方法传递参数,只需要定义形参 e 就可以获取到。...常情况下terget 和 this是一致,但有一种情况不同,那就是事件冒泡(父子元素有相同事件单击元素,父元素事件处理函数也会被触发执行),这时候this指向是父元素,因为它是绑定事件元素对象...生活代理 js事件代理 事件委托原理 给父元素注册事件,利用事件冒泡,当子元素事件触发,会冒泡到父元素,然后去控制相应元素

1.4K50

前端成神之路-WebAPIs03

DOM事件流 html标签都是相互嵌套,我们可以元素想象成一个盒子装一个盒子,document是最外面的大盒子。 当你单击一个div,同时你也单击了div元素,甚至整个页面。...事件对象使用 事件触发发生就会产生事件对象,并且系统会以实参形式传给事件处理函数。 所以,事件处理函数声明1个形参用来接收事件对象。 ?...事件对象兼容性处理 事件对象本身获取存在兼容问题: 标准浏览器是浏览器给方法传递参数,只需要定义形参 e 就可以获取到。...常情况下terget 和 this是一致, 但有一种情况不同,那就是事件冒泡(父子元素有相同事件单击元素,父元素事件处理函数也会被触发执行), 这时候this指向是父元素,因为它是绑定事件元素对象...说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码元素事件执行。 生活代理: ? js事件代理: ?

2.9K20

JavaScript 事件基础补充

一.事件介绍 JavaScript有三种事件模型:内联模型、脚本模型和DOM2模型。 二.内联模型 这种模型是最传统接单一种处理事件方法。...三.脚本模型 由于内联模型违反了HTML与JavaScript代码层次分离原则。为了解决这个问题,我们可以JavaScript处理事件。这种处理方式就是脚本模型。...输入框,选择框和文本区域 当改变一个元素值且失去焦点 onclick 链接、按钮、表单对象、图像映射区域 当用户单击对象 ondblclick 链接、按钮、表单对象 当用户双击对象 ondragdrop...在这里,我们主要谈论脚本模型方式来构建事件,违反分离原则内联模式,我们忽略掉。 对于每一个事件都有自己触发范围和方式,如果超出了触发范围和方式,事件处理将失效。...1.鼠标事件,页面所有元素都可触发 click:当用户单击鼠标按钮或按下回车键触发

3K50

DOM事件基本概念大总结(前端必备)

这样就不会触发 father 了 } 当然该方法同样可以阻止捕获,不过前提是绑定事件指定他捕获阶段触发。...之后就会触发事件。添加事件方法?建议使用之前写跨浏览器事件处理方法。当然也可以通过获取 dom 对象,并对其属性赋值,也可以直接在 html 元素上绑定。...焦点事件标准不一,但是 DOM3 统一了一个标准并且规定了发生顺序 当一个元素移动到另一个元素会依次触发以下事件;一般 blur 与 focus 常见 focusout 失去焦点元素触发...触摸屏 上述事件移动端上又有所不同 并不支持 dblclick ,双击只会放大 轻击不可单击或者没有绑定 click 元素什么事件也不会发生 点击或者绑定 click 前提下点击触发...值存在于 window.orientation

1.8K20

Android之按钮点击事件单击、双击、长按等)

布局文件添加按钮点击事件 java文件添加按钮点击事件 为多个按钮添加点击事件 按钮按下、释放事件 按钮长按事件 按钮长按时过滤掉单击事件 按钮双击事件 按钮双击过滤掉单击事件 布局文件添加按钮点击事件...="showMsg"/> android:onclick属性值"showMsg"即为用户点击屏幕按钮触发方法名字。...,每当点击按钮,就会执行监听器onClick()方法。...,因为按钮双击仍然会先触发单击事件。如果只需要处理双击事件的话则不需考虑这一点,如果要在同一个按钮单击或双击处理不同内容,则需双击过滤掉单击事件。...按钮双击过滤掉单击事件 双击过滤单击事件思路参考以前Qt应用(QML之MouseArea双击过滤掉单击事件):在按钮点击开启定时器,判断300ms内有没有第二次点击,有的话表示双击,

1.5K20

JavaScript停止冒泡和阻止浏览器默认行为

什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次父级元素中被触发 。stopPropagation就是阻止目标元素事件冒泡到父级元素。... 上面的代码,Demo如下,我们单击test,会依次触发alert(“li”),alert(“ul”),alert(“div”),这就是事件冒泡。...= false; preventDefault它是事件对象(Event)一个方法,作用是取消一个目标元素默认行为。...false;      return false;  } 事件注意点 event代表事件状态,例如触发event对象元素、鼠标的位置及状态、按下键等等; event对象只事件发生过程才有效。...IE/Opera是window.event,Firefox是event;而事件对象,IE是window.event.srcElement,Firefox是event.target,Opera

2.2K20

如何在 React 中点击显示或隐藏另一个组件?

React 是一种流行 JavaScript 库,用于构建动态用户界面。一个 React 应用程序,有时需要一个按钮或链接来触发显示或隐藏一个相关组件。...然后,我们组件返回值渲染一个按钮和一个条件渲染 div 元素。当用户单击按钮onClick 事件处理函数会调用 setIsVisible 函数,并将 !...使用事件处理机制响应用户交互React 组件可以onClick 事件处理函数来响应用户单击事件。当用户单击按钮onClick 事件处理函数被触发,并执行一些逻辑代码。...显示/隐藏模态框我们可以使用事件处理函数来触发模态对话框显示或隐藏。当用户单击打开模态框按钮,模态框应该出现;当用户单击关闭按钮或模态框之外,模态框应该消失。...这些示例可以用作参考,帮助你自己 React 应用程序实现点击显示或隐藏另一个组件功能。

4.2K10

JavaScript阻止冒泡和取消默认事件(默认行为)

防止冒泡和捕获 w3c方法是e.stopPropagation(),IE则是使用e.cancelBubble = true stopPropagation也是事件对象(Event)一个方法,用是阻止目标元素冒泡事件...什么是冒泡事件?如在一个按钮是绑定一个”click”事件,那么”click”事件会依次父级元素中被触发 。 stopPropagation就是阻止目标元素事件冒泡到父级元素。... 上面的代码,Demo如下,我们单击test,会依次触发alert(“li”),alert(“ul”),alert(“div”),这就是事件冒泡。...= false; return false; } 事件注意点 event代表事件状态,例如触发event对象元素、鼠标的位置及状态、按下键等等; event对象只事件发生过程才有效...IE/Opera是window.event,Firefox是event;而事件对象,IE是window.event.srcElement,Firefox是event.target,Opera

5.5K30

web前端常见面试题

捕获阶段行为: 浏览器检查元素最外层祖先,是否捕获阶段中注册了一个onclick事件处理程序,如果是,则运行; 然后,移动到单击元素下一个祖先元素,并执行相同操作...,然后是单击元素再下一个祖先元素,依此类推,直到到达实际点击元素; 而冒泡与捕获恰恰相反: 浏览器检查实际点击元素是否冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行; 然后移动到下一个直接祖先元素...比如: blur 元素失去焦点触发,focusout 事件也是失去焦点触发,但可以冒泡; focus 元素获取焦点触发; mouseenter 鼠标移动到元素上时会触发事件,与之对应是 mouseover...事件对象方法 stopPropagation() 阻止事件冒泡,当设置后,点击元素元素绑定事件就不会再触发; preventDefault() 阻止默认事件发生; stopImmediatePropagation...stopImmediatePropagation 方法点击 div 元素,后面注册 click 将不会被触发,而且还会阻止事件冒泡; 比如下面的例子,给 p 绑定多个 click 事件第二个事件函数调用

2.3K20

阻止a标签默认事件及延伸

看如下实例: (1)把单击事件处理程序注册到一个锚元素,而不是一个外层上,那么就要面对另外一个问题:当用户单击链接,浏览器会加载一个新页面。...(2)当用户在编辑完表单后按下回车键,会触发表单submit事件,在此事件发生后,表单提交才会真正发生。 这种行为与我们讨论事件处理程序不是同一个概念,它是单击标签元素默认操作。...如果我们不希望执行这种默认操作,那么事件对象上调用.stopPropagation()方法也无济于事,因为默认操作不是正常事件传播流中发生。...//仅仅是HTML事件属性 和 DOM0级事件处理方法 才能通过返回 return false 形式组织事件宿主默认行为。...当需要停止冒泡行为时,可以使用: function stopBubble(e) { //如果提供了事件对象,则这是一个非IE浏览器 if ( e && e.stopPropagation

2.4K60

React ref & useRef 完全指南,原来这么用!

实例:实现秒表 你可以存储 ref 东西是涉及到一些副作用基础设施信息。例如,你可以ref存储不同类型指针:定时器id,套接字id,等等。.../div> ); } startHandler()函数单击Start按钮时调用,启动计时器并在引用timerIdRef.current= setInterval(…)中保存计时器id。...要停止秒表,请单击停止”按钮。停止按钮处理程序stopHandler()从引用访问计时器id并停止计时器clearInterval(timerIdRef.current)。...此外,如果组件秒表处于活动状态卸载,useEffect()清理函数也将停止计时器。 秒表示例,ref用于存储基础架构数据—活动计时器id。...更新引用与更新状态相反,不会触发组件重新呈现。 引用也可以访问DOM元素

6K20

【前端 · 面试 】JavaScript 之你不一定会基础题(二)

捕获阶段: 浏览器检查元素最外层祖先,是否捕获阶段中注册了一个onclick事件处理程序,如果是,则运行。...然后,移动到单击元素下一个祖先元素,并执行相同操作,然后是单击元素再下一个祖先元素,依此类推,直到到达实际点击元素。...冒泡阶段,恰恰相反: 浏览器检查实际点击元素是否冒泡阶段中注册了一个onclick事件处理程序,如果是,则运行 然后移动到下一个直接祖先元素,并做同样事情,然后是下一个,等等,直到到达<...问题2:如果点击 parent 元素,输出是什么? 可以看到,现在 parent 点击事件是冒泡阶段执行,child 点击事件 捕获阶段执行。...元素 addEventListener 方法第三个参数是 true 或者 false,对元素自己触发事件流程都没有任何影响,只有元素或者子元素触发相同事件后才有影响。

53010

JavaScript(十二)

换句话说,单击按钮同时,你也单击了按钮容器元素,甚至也单击了整个页面。 事件流描述是从页面接收事件顺序。...事件捕获思想是不太具体节点应该更早接收到事件,而最具体节点应该最后接收到事件事件捕获用意在于事件到达预定目标之前捕获。 建议使用事件冒泡,在有特殊需要再使用事件捕获。...')" /> HTML 定义事件处理程序可以包含要执行具体动作,也可以调用在页面其他地方定义脚本,如下: <input type="button" value="Click Me" onclick...JavaScript 错误时 window 上面触发,当无法加载图像 img 元素上面触发 scroll: 当用户滚动带滚动条元素内容元素上面触发 resize: 当窗口或框架大小变化时...也就是说,我们可以为整个页面指定一个 onclick 事件处理程序,而不必给每个单击元素分别添加事件处理程序。

2.9K20

JavaScript事件

这个元素预定了点击 点击发生 执行函数代码 tg.onclick=function(){ alert('点了我'); } </html...最初,是使用HTML事件处理程序,也就是说,某个元素(如div),支持一种事件,都可以使用一个与相应事件处理程序同名HTML特性来制定(也就是标签一个属性),这个特性值就是能够执行JavaScript...事件类型 (1)单击事件onClick   当用户单击鼠标按钮,产生onClick事件。同时onClick指定事件处理程序或代码将被调用执行。...例如:我们为整个一个页面制定一个onclick事件处理程序,此时我们不必为页面每个可点击元素单独设置事件处理程序(onclick)。还是,看一个例子。...换句话说,只要单击元素页面呈现出来了,那么它就立刻具备了相应功能。 整个页面占用内存空间会更少,从而提升了整体性能。

2K60
领券