Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236963
  • 博文数量: 50
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1487
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-24 10:31
文章分类
文章存档

2014年(20)

2013年(30)

分类: 网络与安全

2013-09-02 10:04:50

不同浏览器(chrome、Safari、Firefox、Opera、Internet Explorer)有自身独有的事件机制,其中属微软的Internet Explorer最“另类”。

   就拿事件绑定方法来说吧!

    为了保证有更好的跨浏览器特性,通常推荐采用与浏览器无关的事件绑定方法。

绑定HTML元素属性

这种事件绑定方式简单易用,如:


绑定事件处理器时需要直接修改HTML页面代码,会带来如下几个坏处:

直接修改HTML元素属性,增加了页面逻辑的复杂度。

开发人员需要直接修改HTML页面,不利于团队协作开发。

但是可以在调用javaScript函数时传入参数,典型的就是传入this、event等特殊意义的参数。

绑定DOM对象属性

Document.forms[n].onsubmit=check;

绑定到DOM对象属性时,该属性值只是一个javaScript函数的引用,因此千万不要在函数后面添加括号——一旦添加括号,那就变成了调用该函数,于是将该函数返回值赋给DOM对象的onclick等属性。

DOM模型的事件机制中,提供的事件绑定机制

objectTarget.addEventListener(“eventType”,handle,captureFlag)该方法为objectTarget绑定事件处理器handler,其第一个参数是事件类型字符串(将前面的事件属性去掉前缀”on”,例如click、mousedown、keypress等);第二个参数是事件处理函数;第三个参数用于指定监听事件传播的哪个阶段(true表示监听捕获阶段,false表示监听冒泡阶段)。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    


   
    DOM事件机制




   
   








与addEventListener()方法相对应,DOM也提高了一个方法用于删除事件处理器,该方法为removeEventListener

objectTarget.removeEventListener(“eventType”,handler,captureFlag)

该方法为objectTarget删除事件处理器handler。


Internet explorer支持两种自己独有的事件绑定方法。这两种方法都不需要在HTML元素中增加额外的属性。

在internet explorer 4.0以及更新的版本中,microsoft扩展了



attachEvent方法进行绑定

DOMObject.attachEvent(“eventName”,functionReference)

eventName的值是事件的名称,例如onmousedown;functionReference的值是一个函数引用。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    


   
    使用attachEvent绑定事件处理函数







一般情况,一个DOM对象、一种事件最多只能绑定一个事件处理器。但attachEvent()方法绑定事件处理器时,一个DOM对象,一种事件可以绑定多个事件处理器。

attachEvent()方法对应的是detachEvent()方法,该方法用于删除一个事件处理器

DOMObject.detachEvent(“eventName”,functionReference);
阅读(1923) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~