JavaScript中Event对象的处理——Query事件学习第二篇
JavaScript中Event对象的处理。在大部分浏览器里,当触发Event的类实例作为第一个参数传递到处理程序。
而我们的浏览器霸主IE浏览器却很另类,它以专门的方式处理事情,它把Event实例指派到window对象的名为event的属性。
因此程序员经常看到下面的代码:
if (!event) event = window.event;
这段话就是为了消除这种差异,利用对象检测技术,检查event参数是否为undefined或null,如果这样就把window的event属性指派到event参数,在这个语句之后就可以放心的使用event参数,而不用再关心怎样使它在处理程序中可用。
Event实例的属性提供了关于当前正在处理的已触发事件的大量信息,包括触发的是哪个元素、鼠标事件的坐标,以及为键盘事件点击了哪个键等。
虽然作了上面的对象检测技术,但程序员仍然没有走出对象检测的恶梦。
为了获取目标元素(在该元素上事件被触发)的引用,在标准兼容的浏览器里我们存取target属性,而有IE浏览器里则存取srcElement属性。通过对象检测来处理这个矛盾,利用如下代码:
var target = (event.target) ? event.target : event.srcElement;
这个语句用来测试event.target是否已定义,如果已定义,则指派到本地target变量。否则,指派event.srcElement到本地target变量。对于其它Event属性,我们也采取同样的步骤。
这里主要使用的是流行的对象检测技术。似乎事件处理程序只和充当事件触发器的那个元素有关——例如图像元素,实则不然,事件传播是贯穿整棵DOM树的。
下一贴中将会为大家带来事件传播方法——事件冒泡
原文首发自程序人生:http://www.ourcodelife.com/thread-48654-1-1.html
版权属于:程序人生
版权所有,转载时必须以链接形式注明作者和原始出处及本声明。

浙公网安备 33010602011771号