`
Black_Kite
  • 浏览: 6710 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

JS事件小结1

阅读更多

1.事件流:描述的是从页面接收事件的顺序。

 

IE是事件冒泡流:事件开始时由最具体的元素接收,然后逐级向上传播到不具体的节点。

Safari,Chrome,Firefox,Opera会将事件一直冒泡到window对象。

Netscape是事件捕获流 :在事件到达预定目标之前捕获它。

Safari,Chrome,Firefox,Opera支持这种事件流模型,从window对象开始捕获事件。

 

DOM2级事件:首先发生事件捕获,为截获事件提供了机会。然后是实际的目标接收到事件。最后是事件冒泡阶段。

Safari,Chrome,Firefox,Opera会在捕获阶段触发事件对象,结果会有两个机会在目标对象上面操作事件

 

2.事件处理程序

 

HTML事件处理

 

<input type="button" value="click" onclick="alert('aaa')" /> 

 缺点:1.在不能执行时触发事件,会出错 2.HTML与JS紧密耦合

DOM0级事件处理

  btn.onclick = function(){ alert(this.id); };//MyBtn

  DOM0级方法指定的事件处理程序为元素方法。即程序中this指向当前btn元素。

 

DOM2级事件处理

addEventListener()

removeEventListener()

两者皆接收三个参数

      要处理的事件名(不带on)

      作为事件处理的函数

      boolean:true 在捕获阶段调用事件处理;false 在冒泡阶段调用事件处理

移除事件时参数应与添加事件的参数一致,当使用匿名函数时无法移除事件。

 

var btn = document.getElementById("MyBtn");
btn.addEventListener("click", fun, false);
btn.removeEventListener("click", fun, flase);
//这样移除事件才有效,若是写成匿名函数则无法移除

IE事件处理

attachEvent()

detachEvent()

皆有两个参数

      事件处理程序名称(带on)

      事件处理函数

移除事件时参数应与添加事件的参数一致,当使用匿名函数时无法移除事件。

可以为一个元素添加多个事件,但是与DOM2时间相反,事件按着添加顺序的相反顺序触发。

事件处理程序在全局作用域中进行:this=window

 

3.事件对象

在触发DOM上的某个事件时,会产生事件对象event,包括导致事件的元素,事件的类型,以及其他与特定事件相关的信息。(如:鼠标事件导致的event会包含鼠标位置的信息)

 

DOM中的事件对象

在事件处理程序内部,对象this始终等于currentTarget(其事件处理程序当前正在处理的那个元素),而target则只包含事件的实际目标。

处理多个事件时可以使用type属性

阻止特定时间的默认行为,用preventDefault();

stopPropagation()立即停止事件在DOM层次的传播。

eventPhase属性可以用来确定事件当前处于事件流的哪个阶段。捕获=1;处于目标对象上=2;冒泡阶段=3

 

IE中的事件对象

访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法。

DOM0级方法添加事件处理程序时,event作为window对象的的属性。

若用attachEvent()添加,则有一个event对象作为参数被传入到处理函数中。

var btn = document.getElementById("MyBtn");
btn.attachEvent("onclick", fucntion(event){
     alert(event.type);
});

因为事件处理程序是根据指定方式来确定的,所以不能认为this会始终等于事件目标,最好用event.srcElement属性。

returnValue属性==preventDefault()方法,设置为false,就可以阻止默认行为。

cancelBubble属性==stopPropagation()方法,不过只能取消事件冒泡,因为IE不支持捕获事件。

分享到:
评论

相关推荐

    JavaScript事件学习小结(五)js中事件类型之鼠标事件

    JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...

    JavaScript事件学习小结(三)js事件对象

    JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...

    JavaScript事件学习小结(二)js事件处理程序

    JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...

    JavaScript键盘事件测试小结

    JavaScript键盘事件测试小结,相信可能会对您的工作有一定的帮助作用

    JavaScript事件学习小结(一)事件流

    JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...

    JS个人小结

    将上传的图片添加防伪图片水印,并将图片直接写入数据库,不...js遇到的问题--转义字符。。FileUpload控件上传资源,需要在本地选择资源时为一个文本框赋值,js判断上传图片格式。。只能输入数字与英文,指定位数小数

    javaScript事件学习小结(四)event的公共成员(属性和方法)

    JavaScript事件学习小结(五)js中事件类型之鼠标事件 //www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 //www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员...

    js 事件小结 表格区别

    js 事件小结 表格区别

    JavaScript作用小结.doc

    JavaScript作用小结: 1 创建脚本块 2 隐藏脚本代码 3 浏览器不支持的时候显示

    javascript中Date format(js日期格式化)方法小结.docx

    javascript中Date format(js日期格式化)方法小结.docx

    JS 控件事件小结

    概述: 事件对于控件来说至关重要,控件的消息通信机制使用事件的成本最低,但是对于JS控件来说有一些麻烦需要解决,JS类本身不支持事件,DOM模型支持的事件仅适应于浏览器的DOM节点。所以创建一套事件是我们写控件...

    JS获取文件大小方法小结

    本文实例总结了JS获取文件大小方法。分享给大家供大家参考,具体如下: 方法一,利用ActiveX控件实现: [removed] function getFileSize(filePath) { var fso = new ActiveXObject("Scripting.FileSystemObject");...

    javascript课程内容总结

    在课堂上学到的JavaScript进行总结,希望可以帮助更多的人,多多分享自己,从而能互相学习,如果写的有错误的地方也希望大家能指正

    js下关于onmouseout、事件冒泡的问题经验小结.docx

    js下关于onmouseout、事件冒泡的问题经验小结.docx

    JavaScript学习小结(一)——JavaScript入门基础

    1.1、JavaScript是基于对象和事件驱动的(动态的)  它可以直接对用户或客户输入做出响应,无须经过Web服务程序。它对用户的响应,是采用以事件驱动的方式进行的。所谓事件驱动,就是指在主页中执行了某种操作所产生...

Global site tag (gtag.js) - Google Analytics