二、JavaScript语言--事件处理--DOM事件探秘

第一章 事件流

  事件:是文档或浏览器窗口中发生的、特定的交互瞬间。JavaScript和HTML之间的交互都是通过事件来实现的。

  事件流:描述的是从页面中接受事件的顺序

  IE:事件冒泡流

  Netscape:事件捕获流

  事件冒泡:即事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档)。

  事件捕获:不太具体的节点应该更早接收到事件,而最具体的节点最后接收到事件。

第二章 事件处理程序

  1、HTML事件处理程序

  HTML事件的缺点:HTML和JS代码紧密的耦合在一起。如果需要改事件处理程序,JS代码和HTML都需要进行修改。

  例子:

  

  2、DOM0级事件处理程序

  较传统的方式:把一个函数赋值给一个事件的处理程序属性。是用的比较多的方法,原因是简单,有跨浏览器的优势。没有HTML事件的缺点。优点:可以给一个元素添加多个事件处理程序,按顺序执行。

  例子:

  

  3、DOM2级事件处理程序

  DOM2级事件定义了两个方法:

  用于处理指定和删除事件处理程序的操作

  addEventListener()和removeEventListner()

  接收三个参数:

  语法为:

  element.addEventListener(type,listener,useCapture)

  要处理的事件名、作为事件处理程序的函数和布尔值(true-->表示在捕获阶段调用事件处理程序,false-->表示在冒泡阶段调用事件处理程序(可以兼容各种浏览器))。

  •其中element是要绑定函数的对象。
  •type是事件名称,要注意的是"onclick"要改为"click","onblur"要改为"blur",也就是说事件名不要带"on"。
  •listener当然就是绑定的函数了,记住不要跟括号
  •最后一个参数是个布尔值,表示该事件的响应顺序

  优点:可以给一个元素添加多个事件处理程序,按顺序执行。

  注意:用addEventListener()添加的事件,只能用removeEventListner()移除。且在IE中不好使。

  例子:

    

  4、IE事件处理程序

  attachEvent()添加事件

  detaEvent()删除事件

  接收相同的两个参数:事件处理程序的名称(事件需要把on加上)和事件处理程序的函数

  不使用第三个参数的原因:IE8以及更早的浏览器版本只支持事件冒泡。

  支持IE事件处理程序的浏览器:IE和OPERA

  例子:

  

  注意:从IE11开始,已经开始DOM2级事件处理程序,而不再使用IE事件处理程序。

  5、跨浏览器的事件处理程序

  

时间: 2024-10-24 09:58:37

二、JavaScript语言--事件处理--DOM事件探秘的相关文章

仅用原生JavaScript手写DOM事件模型

前言 前段时间博客园里有篇很火的帖子2016十家公司前端面试小记,主要讲作者的前端求职面试经历,其中提到了面试官会考察手写一个简单的事件模型: "如果上述都ok的话,那么极有可能要求让你[实现事件模型],即写一个类或是一个模块,有两个函数,一个bind一个trigger,分别实现绑定事件和触发事件,核心需求就是可以对某一个事件名称绑定多个事件响应函数,然后触发这个事件名称时,依次按绑定顺序触发相应的响应函数." 如果了解观察者模式,那么事件模型应该不算太难.本着深入钻研的精神,我试着来

DOM事件探秘

#事件流 事件捕获:由document向事件触发的元素捕获 事件冒泡:由触发事件的元素向上级触发 #事件处理程序 HTML事件处理程序 <input type="button" value="按钮" onclick="alert('hello world')"></input> 或者 <script type="text/javascript"> function showMes(){ al

DOM事件探秘之事件流与事件处理程序

1.事件流:描述的是从页面中接受事件的顺序 ①.事件冒泡流:即时间最开始由最具体的元素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播至最不具体的那个节点(文档).      栗子:若<body><div><input type="button"/></div></body>次结构,点击按钮时,默认点了按钮的容器 默认点了body,默认点了html,默认点了document. ②.事件捕获:不太具体的节点应该更早接收到事

QQ面板拖拽(慕课网DOM事件探秘)(下)

2.鼠标事件坐标获取 function fnDown(event) { var event = event || window.event; var oDrag = document.getElementById("loginPanel"); //光标按下时光标和面板之间的距离: var disX = event.clientX - oDrag.offsetLeft; var disY = event.clientY - oDrag.offsetTop; //移动 document.o

DOM事件

在慕课网上学习了DOM事件探秘课程,特此整理了一下笔记. 慕课网DOM事件探秘课程地址:http://www.imooc.com/learn/138 事件 是文档或浏览器窗口中发生的特定的交互瞬间.[JavaScript <------>HTML] 事件流 描述的是从页面中接受事件的顺序 (IE:事件冒泡流 / Netscape事件捕获流) 事件的三个阶段 事件的三个阶段分别是:捕获阶段.目标阶段.冒泡阶段 事件冒泡流:即事件最开始由最具体的无素(文档中嵌套层次最深的那个节点)接收,然后逐级向

javascript中的dom元素操作

javascript中的Dom事件操作 函数 函数就是将一些方法封装,通过调用执行函数. 作用: 避免重复代码. 简化编程,让编程模块化. 语法:fuction(){ } function是一个关键字,类似于Python中定义函数的"def": 小括号里放参数 大括号里放函数语句. 函数的调用 函数名+() 函数的参数 形参 实参 argument:只能在函数中使用. 返回实参的个数:argument.length 返回形参的个数:fn.length 伪数组 可以修改元素,但不能改变数

JavaScript之jQuery-4 jQuery事件(页面加载后执行、事件处理、事件冒泡、事件对象、模拟操作)

一.jQuery 页面加载后执行 代码执行的时机选择 - $(document).ready()方法和 window.onload事件具有相似的功能,但是在执行时机方面是有区别的 - window.onload 事件是在网页中所有的元素(包括元素的所有关联文件)完全加载到浏览器后才执行 - $(document).ready()方法注册的事件处理程序,在DOM完全加载后就可以调用 - 一般来讲, $(document).ready()的执行要优于window.onload事件 - 需要注意的是,

深入理解js Dom事件机制(二)——添加事件处理程序

深入理解js Dom事件机制(一)--事件流 事件就是当用户或者浏览器自身执行的某种动作,诸如 click.mouseover等都是事件的名称,那响应个事件的函数就称为事件处理程序(事件处理函数.事件句柄). 事件处理程序的名字都是以on+事件名称命名,比如 click事件的事件处理程序就是onclick, 为某个事件指定事件处理程序的方式大致分为三种. 1.HTML事件处理程序 这个很简单,大家基本初学js的时候都应该用过,就不再赘述,直接看实例代码 <!DOCTYPE html> <

【转载】DOM 事件深入浅出(二)

DOM 事件深入浅出(二) 在DOM事件深入浅出(一)中,我主要给大家讲解了不同DOM级别下的事件处理程序,同时介绍了事件冒泡和捕获的触发原理和方法.本文将继续介绍DOM事件中的知识点,主要侧重于DOM事件中Event对象的属性和方法. 那么什么是DOM事件中Event对象呢?事件对象(event object)指的是与特定事件相关且包含该事件详细信息的对象.我们可以通过传递给事件处理程序的参数获取事件触发后所产生的一系列方法和属性. Event对象 Event对象其实是一个事件处理程序的参数,