的kitjs事件管理的Javascript前端UI框架工具使用指南

的kitjs事件管理的Javascript前端UI框架工具使用指南
从今天的章节中,我将重点放在KitJs的事件管理的内容,并试图揭示你平实的语言如何主流JS框架实现了自己独立的事件管理功能的内部。

(一)普通Dom事件

我们通常可以通过支持HTML来编写事件。

测试

或绑定到DOM对象

document.getelementbyid('a')。Onclick =函数(){ alert(1)}

或两级事件

document.getelementbyid(a。AddEventListener('点击',函数(){ alert(1)},假)

或通过脚本标记
W3C标准推荐了这两个级别事件的第三种绑定方式,以解耦HTML和Js的强依赖性。

(二)问题

但是如果我们直接使用JS编程的3种方法是不够的,因为会出现以下问题

1。浏览兼容性,IE和W3C支持的浏览器与绑定两个级别事件的方式不兼容。

2。在2级事件绑定之后,您不知道其他人是否为同一个元素绑定了事件,哪些事件被捆绑了,事件的内容是什么

3、在2级事件绑定方法触发后,顺序不会按照绑定前的顺序执行,但有时我们需要按顺序触发命令

4、当触发同一元素的事件时,W3C的标准API不支持绑定到同一元素的任何其他事件,W3C继续触发。

5,很多时候,通过匿名函数的2级事件我们登记,不留登记事件执行的方法处理,所以很难注销事件通过removeEventListener。

(三)如何解决工具箱问题

好的,js框架是为了解决上述问题而存在的。让我们看看工具包如何处理上述问题。

在kit.js API,有一个EV(config)方法
该方法接受一个包含4个重要参数的映射类型对象,

EL需要绑定的元素

字符串类型的事件

FN触发执行方法

范围可以省略,如果需要指定这个指针,如果没有,则当注册作为指针引入时,EL

(四)代码分析

让我们来看一下代码实现。

直接从核心
如果输入参数不为空,一个对象是建立在传入的参数是用来节省El KitJs事件的注册evreg

在evreg对象的子对象,称为事件evregev,使登记。

在evregev对象,一键保存当前事件,值是一个数组,数组的参数配置,根据订单顺序到达EV方法介绍,这是一个数组!!!这非常重要,因为数组可以保存顺序。

还有一个匿名的方法称为evregfn,从而节省了事件触发。
我们可以看到,evregfn是匿名的事件。在开始的时候,他会告诉如果变量窗口{我。常数。kit_event_stopimmediatepropagation }全球是= =真的,如果这是真的,它会回来,它不会继续执行。

再往下看,他会接受的事件触发的EV对象,并添加许多物体在mergeif方式的电动汽车,如目标,currentTarget和relatedtarget,为了解决浏览器兼容性问题。

stopnow,stopdefault,和stopgoon是为了阻止事件继续触发的方法。

这是evregfn的关键,我们将在事件内部数组的evregev创造周期,根据命令,参数配置在执行删除的EV方法,方法内部的配置参数,如果该方法返回的值不为空,则返回的返回值
最后,做一个浏览器兼容和约束我们的evregfn匿名方法在一个2级事件。

(五)摘要

简单地说,一个自己的工具包的匿名方法,缓存将事件注册处理成一个数组,这样您就可以记住事件序列,并在事件、参数、方法等之前查找入口,同时兼容兼容的浏览器。

(六)取消事件

借助工具包来缓存事件句柄,取消很容易。
你可以看到盒找出相应的事件配置比较直接比较或对比的方式fn.tostring fn.tostring()。修剪(),并删除它从数组。

(七)事件增强

现在,你应该注意试剂盒用于系统的事件对象做了mergeif操作。首先,我们为什么要做megerif,因为系统中的事件对象的属性是只读的,不能被覆盖,它只能说它没有属性。

所以只有megerif试剂盒,我们都知道,每个浏览器事件对象,事件对象具有不兼容的,所以我们需要去盒固定不兼容,如IE没有目标属性,只有srcelement,我们可以添加目标属性的他,与W3C标准兼容的实现

当然,只有修理是不够的,以满足我们的需要。在许多情况下,我们还需要为事件对象做一点肥料。

例如,当开发iPhone着陆touchmove,我们经常需要接单指的偏移,并以单指标的偏移,也需要电动车。targettouches { 0 }。ClientX,这样的代码。但是一旦匿名功能完成,它就不能与PC兼容。

你怎么做,也不要紧,我们可以给事件对象mergeif自身属性

firstfingerclientx等等,这样我们就可以简单地实现移动端,在PC端的开发代码是统一的。

下一篇文章是说HTML5拖放,高级手势是基于这个基础的。

为什么不加入,新的事件,像ExtJS,因为

1。系统的原始对象具有一定的继承关系,不想破坏它。

2。如果使用自己的新对象,它可能导致代码脱离框架,而不是可移植性,并且需要再次更改代码内容。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部