首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

读jq之8(原生事件对象的修复及扩充)

2012-10-24 
读jq之八(原生事件对象的修复及扩充)由于各个浏览器中原生事件对象的 差异性 ,多数 JS库/框架 都或多或少

读jq之八(原生事件对象的修复及扩充)

由于各个浏览器中原生事件对象的 差异性 ,多数 JS库/框架 都或多或少的对原生事件对象进行了修复及扩充。

比如,停止事件冒泡IE用 cancelBubble ,标准浏览器则用? stopPropagation 。

获取事件源对象,IE用 srcElement,标准浏览器则用 target诸如此类。

jQuery 对原生事件对象的修复和扩充主要使用 jQuery.Event 类和 jQuery.event.fix 方法。

?

?

它主要做了以下工作

1,event = jQuery.Event( originalEvent ); 该句创建了一个jQuery.Event类的实例对象,该对象修复及扩充上面刚刚提到了。
2, 一个循环将原生事件对象的所有属性拷贝给 1 中的event对象。

for ( var i = this.props.length, prop; i; ) {    prop = this.props[ --i ];    event[ prop ] = originalEvent[ prop ];}

?

3, 统一事件源对象为 target 。
4, 统一事件相关对象为 relativeTarget 。
5, 扩充了pageX, pageY,这两个属性首次在Firefox中引入的。不支持该属性的浏览器使用clientX/Y计算得到。
6, 扩充了 which,使用它获取键盘按键值(keyCode)。这个属性也是在Firefox引入的。
7, 修复了metaKey。
8, 扩充了which,使用它获取鼠标按键值

细心的人可能注意到了,jQuery获取键盘按键值和鼠标按键值都是采用which。它没有向其它属于一样去兼容W3C已有标准 (button)。这一点我在 读jq之七? 及 各浏览器中鼠标按键值的差异 做了详细分析。



好了,整个jQuery事件对象就是如此..

以上源码摘自 jQuery1.4.4 。

?

1 楼 pfans 2010-12-07   项目中正用jquery,分析的很好。 2 楼 select*from爱 2010-12-10   zhouyrt,去知识库搞个专栏吧

热点排行