事件监听器就是响应某个事件的函数就叫事件处理程序(),事件处理程序以on开头,因此click的事件处理程序就是onclick 或addEventListener 一个完整的事件系统,通常存在以下三个角色...DOM即是当时蕴酿出来的杰作。 Javascriptd的早期版本向程序员提供了查询和操控Web文档某些实际内容(主要是图像和表单)的手段。...JavaScript的加冕历史》、《浏览器史话中chrome霸主地位的奠定与国产浏览器的割据混战》 DOM2级 事件处理程序 DOM2开始推崇三层分离: DOM视图(DOM Views):定义了跟踪不同文档...在dom时代,兼容了二者 addEventListener()和removeEventListener() 在DOM中,addEventListener()和removeEventListener(...指定事件执行阶段 elem.addEventListener("eventType", fn , boolean); 参数说明: 事件类型 函数 如果为true,表示在捕获阶段执行,false为在冒泡阶段执行
也就是我们需要提前定义好某些事件发生了该怎么处理,这个过程叫做绑定事件处理程序。...DOM中的事件对象 兼容DOM的浏览器会产生一个event对象传入事件处理程序中。...W3C在DOM2级文档规范中,包含了DOM 事件(DOM Events)规范,也就是我们通常所说的DOM2级事件处理程序。...DOM2级事件处理方式: DOM2级事件处理方式指定了,添加事件处理程序和删除事件处理程序的方法。...DOM2级定义了addEventListener()和removeEventListener()用于处理指定和删除事件处理程序。
DOM 事件流 为了在浏览器中兼容这 2 种事件流,在 DOM2 Events 规范中将事件流分为 3 个阶段:事件捕获阶段、到底目标阶段、事件冒泡阶段。 ?...可以通过指定 addEventListener 的第三个参数为 true 来设置事件是在捕获阶段调用事件处理程序,默认是 false 指在冒泡阶段调用事件处理程序。...btn.onclick = function() { } // 移除事件 btn.onclick = null DOM2 事件处理程序 通过 addEventListener 可以添加 DOM2 级别的事件处理程序...,即可以在捕获阶段触发事件,而 DOM0 是不行的; addEventListener 可以为同一个元素多次添加同一类型的事件处理程序,先添加的事件处理程序会先触发,而 DOM0 如果给同一个元素绑定多个相同类型的事件处理程序的话...一样,需要带上 on,比如 onclick; 在通过 attachEvent 添加的事件处理程序内部 this 会指向 window,而 DOM0 和 DOM2 的 this 会指向元素本身; 和 addEventListener
大多数程序员更希望避免这种方法。 一个更好的机制是,系统在发生事件时主动通知我们的代码。浏览器实现了这种特性,支持我们将函数注册为特定事件的处理器。...在为整个窗口注册处理器之前,我们在window对象上调用了addEventListener。 这种方法也可以在 DOM 元素和一些其他类型的对象上找到。...传播 对于大多数事件类型,在具有子节点的节点上注册的处理器,也将接收发生在子节点中的事件。若点击一个段落中的按钮,段落的事件处理器也会收到点击事件。...因此,如果您安排了太多工作,无论是长时间运行的事件处理器还是大量短时间运行的工作,该页面都会变得缓慢且麻烦。...在第一个示例中,当用户输入某些字符时,我们想要有所反应,但我们不想在每个按键事件中立即处理该任务。当用户输入过快时,我们希望暂停一下然后进行处理。
#ThoughtWorkers好声音#第十五期 (图片:网络) 有些东西称为基本功,对于 Web 开发而言,事件处理模型便是其中的一个,我们经常会在代码里遇到阻止浏览器默认行为的做法。...浏览器默认行为执行与阻止分析 首先简单回顾下DOM的事件处理过程: DOM0级: ? 在图(1)所示的capture phase中, 事件向下冒泡抵达目标的父元素。...可以指定事件流类型为冒泡或捕获(第三个boolean参数,为false为冒泡类型)。 需要注意的一点是IE仅从IE9开始支持DOM2级事件处理方式。...IE事件处理程序: IE(以及Opera)实现了attachEvent()和detachEvent()方法进行事件绑定与解绑,绑定事件会被添加到冒泡阶段。...stopImmediatePropagation(): 这是dom3级事件中新增的方法,在取消进一步冒泡与捕获的同时,阻止任何事件处理程序被调用。 现有如下代码: <!
事件侦听注册事件 addEventListener // (1) 里面的事件类型是字符串 必定加引号 而且不带on // (2) 同一个元素 同一个事件可以添加多个侦听器(事件处理程序)...3. addEventlistener (type, listener[, useCapture])第三个参数如果是true,示在事件捕 获阶段调用事件处理程序;如果是false (不写默认就是false...), 表示在事件冒泡阶段调用事件处理 程序。...事件对象的使用 事件触发发生时就会产生事件对象,并且系统会以实参的形式传给事件处理函数。 所以,在事件处理函数中声明1个形参用来接收事件对象。 ?...什么是事件委托 把事情委托给别人,代为处理。 事件委托也称为事件代理,在 jQuery 里面称为事件委派。 说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码在父元素的事件中执行。
本篇博客将围绕HTML DOM事件展开详细的解释,包括事件的类型、事件处理程序、事件对象和示例代码。让我们一起来深入了解吧。 什么是事件?...事件处理程序 事件处理程序是JavaScript函数,它们在特定事件发生时执行。事件处理程序通常通过addEventListener方法将其附加到DOM元素上,以便在事件触发时执行。...当按钮被点击时,事件处理程序中的代码将被执行,这里我们简单地在控制台中打印了一条消息。...要从DOM元素中删除事件处理程序,可以使用removeEventListener方法,传递与添加事件处理程序时相同的事件类型和处理程序函数。...,但由于我们在inner的事件处理程序中调用了event.stopPropagation(),事件不会继续传递给middle和outer元素的事件处理程序。
事件侦听注册事件 addEventListener // (1) 里面的事件类型是字符串 必定加引号 而且不带on // (2) 同一个元素 同一个事件可以添加多个侦听器(事件处理程序)...3. addEventListener(type, listener[, useCapture])第三个参数如果是 true,表示在事件捕 获阶段调用事件处理程序;如果是 false(不写默认就是false...),表示在事件冒泡阶段调用事件处理 程序。 ...事件对象的使用 事件触发发生时就会产生事件对象,并且系统会以实参的形式传给事件处理函数。 所以,在事件处理函数中声明1个形参用来接收事件对象。...什么是事件委托 把事情委托给别人,代为处理。 事件委托也称为事件代理,在 jQuery 里面称为事件委派。 说白了就是,不给子元素注册事件,给父元素注册事件,把处理代码在父元素的事件中执行。
在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含这所有与事件有关的信息。包括导致事件的元素、事件的类型和事件的相关信息。例如鼠标操作的事件中,会包含鼠标的位置信息。...DOM中的事件对象 兼容dom的浏览会将一个event对象传递到事件处理程序中。...如果直接将事件处理程序指定给了目标元素,则this、target和currentTaget包含相同的值。...IE中的事件对象 在IE中方式event对象可以通过多种方式,取决于指定事件处理程序的方法。...但是如果通过attachEvent添加事件,则事件处理程序会传递一个event对象。 IE的event对象同样包含创建它的相关属性和方法,与DOM事件一样,也会因为事件类型的不同而不同。
事件绑定的几种方式 javascript 给 DOM 绑定事件处理函数总的来说有2种方式:在 html 文档中绑定、在 js 代码中绑定。...a;c中只是两个函数体一样的匿名函数,分别有各自的内存地址,故认为是两个不同的函数对象 深入理解事件-1.png 方式5:[object].addEventListener(“事件类型”,”处理函数”...JavaScript高级程序设计上讲:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件。我们可以用取快递的例子来理解这个东西。 假设:有三个同事预计会在周一收到快递。...在JavaScript中,添加到页面上的事件处理程序数量将直接关系到页面的整体运行性能,因为需要不断的与dom节点进行交互,访问dom的次数越多,引起浏览器重绘与重排的次数也就越多,就会延长整个页面的交互就绪时间...()方法,用于阻止事件冒泡 preventDefault()方法,阻止事件的默认行为 移动端用的多 8.4 IE中的事件对象 第一种情况: 通过DOM0级方法添加事件处理程序时,event对象作为window
事件处理函数(事件侦听器):响应的某个事件函数。 添加事件有几种方式(以click事件为例)? 在HTML中添加onclick属性,值使用JS的字符串来表示要执行的事件。...onclick是DOM0级事件处理方式,而addEventListener是DOM2级事件处理方式,所以兼容性onclick会更好一些(虽然现在addEventListener也不会有什么问题)。...true的 因为捕获阶段先于冒泡阶段 addEventListener可以使用removeEventListener来删除事件处理程序,而onclick最多只有一个事件处理程序,所以只要btn.onclick...addEventListener中的this指向DOM元素,而attachEvent中的this指向window。 attachEvent只支持冒泡不支持捕获,所以也就没有第三个参数。...attachEvent如果添加多个事件处理程序那么先执行后添加的后执行先添加的,这与addEventListener恰好相反(IE9和IE10修改了执行顺序和addEventListener一样了,先添加的先执行
DMO2级事件处理程序 指定和删除事件处理程序的操作:addEventListener和removeEventListener addEventListener("事件", "处理程序", boolean...IE中的事件对象 在使用DOM0级方法添加事件处理程序时,event对象作为window对象的一个属性存在。...想向DOM中添加一个新元素,所以必须确定页面已经加载完毕。 B. 新图片元素设置了src属性就会开始下载。所以必须在指定src元素之前先指定事件! 了解了上述特性,我们可以在客户端预先加载图片。...事件委托 解决“事件处理程序过多”问题。利用事件冒泡,只指定一个事件处理程序,来管理某一类型的所有事件。...(2)在页面中设置事件处理程序所需的时间更少。只添加一个事件处理程序所需的DOM引用更少,所花的时间也更少。 (3)整个页面占用的内存空间更少,能提升整体性能。 使用范围: A.
一、事件简述 1、事件概念 在Web中, 事件在浏览器窗口中被触发,执行事先绑定的事件处理器(也就是事件触发时会运行的代码块),对事件做出响应。...事件处理程序是预先设定的,我们需要提前定义好某些事件发生了该怎么处理,这个过程叫做绑定事件处理程序 2、JavaScript指定事件处理程序 2.1原理: JavaScript指定事件处理程序就是把一个函数赋值给一个元素的事件处理程序属性...3、DOM2事件处理程序 3.1简介 DOM2事件处理程序可以解决不能绑定多个事件处理函数的问题 DOM2级事件定义了两个方法用于处理指定和删除事件处理程序的操作: addEventListener removeEventListener...3.2 addEventListener使用 addEventListener有三个参数 事件类型 事件处理方法 布尔参数,如果是true表示在捕获阶段调用事件处理程序,如果是false,则是在事件冒泡阶段处理...我这里不做赘述 2.5stopPropagation() 阻止事件在 DOM 中继续传播,防止再触发定义在别的节点上的监听函数,但是不包括在当前节点上其他的事件监听函数。
3、DOM2级事件处理程序 DOM2级事件定义了两个方法:用于处理指定和删除事件处理程序的操作:addEventListener()和removeEventListener()。...addEventListener,IE有IE独有的DOM2级事件处理程序。...4、IE事件处理程序 在IE中也提供了类似的两个方法 attachEvent()添加事件 detachEvent()删除事件 这两个方法接收相同的两个参数:事件处理程序名称与事件处理函数 [程序6]...Paste_Image.png 1、DOM中的事件对象 type:获取事件类型 [程序8] function showMsg(event){ alert(event.type); //click }...那么可以这样写:event.preventDefault() 2、IE中的事件对象 type:获取事件类型 srcElement:事件目标 cancelBubble=true阻止事件冒泡 returnValue
文档对象模型(Document Object Model, DOM),在控制面板中用window.document获取 1.简单的html5页面元素 处理程序 以这种方式添加的事件处理程序会在事件流的冒泡阶段被处理 var btn = document.getElementById("mybtn"); // 取得该按钮的引用 btn.onclick...= function () { alert('clicked'); alert(this.id); // mybtn } DOM2 级事件处理程序 DOM2 级事件定义了两个方法,用于处理指定和删除事件处理程序的操作...所有 DOM 节点中都包含这两个方法,并且它们都接受 3 个参数:要处理的事件名,做为事件处理程序的函数和一个布尔值。...最后这个参数如果是 true,表示在捕获阶段调用事件处理程序;如果是 fasle,表示在冒泡阶段调用事件处理程序。
前端开发 JavaScriptD DOM ---- 1.事件流 事件流描述的是从页面中接受事件的顺序。...2.事件处理程序 1.HTML事件处理程序 2.DOMO级事件处理程序 3.DOM2级事件处理程序 DOM2级事件定义了两个方法:用于处理指定和删除事件处理程序的操作,addEventListener...4.IE事件处理程序 attachEvent()添加事件 detachEvent()删除事件 这两个方法接收相同的两个参数:事件处理程序名称与事件处理函数 跨浏览器的事件处理程序: var eventUtil...中的事件对象 (1)、type:获取事件类型 (2)、target:事件目标 (3)、stopPropagation() 阻止事件冒泡 (4)、preventDefault() 阻止事件的默认行为...2.IE中的事件对象 (1)、type:获取事件类型 (2)、srcElement:事件目标 (3)、cancelBubble=true阻止事件冒泡 (4)、returnValue=false
这使得我们可以在 DOM 加载完成后执行一些操作,例如初始化页面元素、注册事件监听器、执行一些初始的 JavaScript 逻辑等。...3.3 应用场景 beforeunload 事件在页面即将被卸载(关闭、刷新、导航到其他页面等)之前触发。它通常用于询问用户是否确定离开当前页面,并可以在事件处理函数中执行一些清理操作。...在事件处理函数中,我们可以执行一些提示用户保存数据或离开前的确认逻辑。...通过调用 preventDefault 方法,我们阻止了默认的 beforeunload 行为,并通过设置 returnValue 属性(在某些浏览器中需要设置)为空字符串来确保提示框的显示。...DOMContentLoaded 事件在 HTML 和 DOM 树加载完成后触发,适用于执行与 DOM 相关的初始化操作。
clickThree()">点击 2.DOM0级事件处理程序 var btn2 = document.getElementById...("two"); btn2.onclick = function () { console.log("点击的是two"); } 3.DOM2级事件处理程序 DOM2级事件定义了...2个方法,用于处理指定和删除事件处理程序的操作,addEventListener()和removeEventListener()。...三、事件对象 在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含着所有与事件有关的信息;包括导致事件的元素,事件的类型以及其他与特定事件相关的信息。...如果cancelable是 true,则可以使用这个方法 stopImmediatePropagation() Function 取消事件的进一步捕获或冒泡,同时阻止任何 事件处理程序被调用 stopPropagation
把相同的方法抽出来后会发现,无法实现多个监听,就是因为两个方法变成完全一样了。...(type, listener[, useCapture])第三个参数默认是 false,表示在冒泡阶段调用事件处理程序,如果是 true,则表示在事件捕获阶段调用事件处理程序。...在 IE6~8 中,浏览器不会给方法传递参数,需要的话,要到 window.event 中获取。...()之前会依次弹出 1、2、3、4,在按钮绑定的事件中,加上之后只会弹出 1 事件委托 事件委托也被称为事件代理,在 jQuery 里面称为事件委派。...作用 只需要操作一次 DOM,提高了程序性能。
而 DOM 事件分为 3 个级别:DOM0 级事件处理,DOM2 级事件处理和DOM3 级事件处理。由于DOM1 级中没有事件的相关内容,所以没有DOM1 级事件。...3.DOM3 级事件 在DOM 2级事件的基础上添加了更多的事件类型。...,阻止任何父事件处理程序被执行。...我们在例4的inner元素click事件上,添加event.stopPropagation()这句话后,就阻止了父事件的执行,最后只打印了'inner'。...,也能阻止元素同事件类型的其它监听器被触发。
领取专属 10元无门槛券
手把手带您无忧上云