现在的位置: 首页 > web前端 > 正文

前端事件系统的绑定方式整理

2020年01月02日 web前端 ⁄ 共 1255字 ⁄ 字号 评论关闭

  事件是前端之中,非常重要的一个部分。其作用在于对于用户的各种行为进行相应。近日打算对于事件系统进行更为深入的学习,同时,对于这一部分学习的内容进行一个总结。因为浏览器发展至今,事件系统本身已经尤为的复杂了,所以事件这一部分内容可能会将分为很多章来进行总结。本章将对于事件系统,根据个人的经验,以及其他地方学到的东西进行一个归纳,给出一些简单地处理方案,而在后面几章将会引入经典jquery的源码进行阅读。

绑定方式整理

  事件系统发展至今,我们常见的对于事件的绑定方式有三种。

  直接将其写在元素标签之中。类似用如下的写法

   < d ivonClick="function">

  这种方法可以说是非常古老的写法了,不过至今还是会有人在用。对已现在来说其实并不推荐使用这种方法来绑定事件,其不推荐使用的原因将在第二种绑定方法之中说明。

对于第一种onXXX的方法,也采用如下的方法进行绑定

  el.onclick=function

  这种方法其实和第一种绑定方法本质上是一样的。也就是我们常常所说的dom0事件。之前在一种中也说过,其实现在并不推荐使用这种方法,原因如下

  该方法绑定的事件所执行的回调函数只允许一个,倘若绑定了两个,那么第二个将覆盖掉对于第一个的绑定。

  该方式只支持事件冒泡

  在ie下的该方式的回调函数,并不能像我们往常一样,拥有事件对象参数。

  该方式对于dom3的部分新增事件不支持。同时对于FF的部分私有实现也并不支持。

  其实对于该方式绑定事件来说,前面三点就决定了,我们不能使用该方法进行绑定事件。而对于第四点,dom3的部分新增事件的不支持,其实我们在日常的使用之中,对于不支持的那些事件,我们的使用频率也是很低的。因为许多新事件,可能还未曾进入我们的视野,就已经被废弃了。

最后就是我们常说的dom2事件系统了

  不过dom2事件系统,现存的拥有两套不同的API,因此,在下面将分为两方。

  ie方面,对于事件的绑定,采用如下的方法

  el.attachEvent("on"+type,callback)

  这是微软对于ie5添加的API(除了事件绑定外,还有相应的解绑,创建,派发等)。他解决了之前采用onXXX方法会导致的只允许一个回调的情况,支持了对于同种事件多个回调的绑定。但是这套方案,其实并没有给前端带来什么好处,当你对一个事件系统进行处理的适合,应该能很深的感觉到这种方式其带来的无数问题,以及对于这些问题的解决,会花费很多很多的心思。

  大致带来的问题如下:

  1.对于dom3事件的不支持

  2.this的指向不是被绑定元素,而是(个人感觉这也是this指向极为特殊的一个情况)-对于多个回调的绑定,其执行顺序却并不是按照理所当然的想的那样按照绑定顺序来执行,而是按照不规律的顺序来执行的。

  3.其event事件对象与w3c的event对象存在极大差异

  4.同样只支持事件冒泡

  结束语:以上就是关于前端事件系统的绑定方式整理的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.