Event扩展

Prototype为event对象的所有属性进行统一的封装,这样,在任何浏览器中使用这些方法都相当方便,不需要考虑浏览器兼容问题.同时还避免了IE中内存泄露的问题

element():Event.element(event)->Element,返回事件源,参数为event对象

Event.observe(document.body,'click',function(event){
var elt=Event.element(event);//获取事件源
if('P'==elt.tagName)
    $(elt).hide();
});
//如果点击了p标签,p结点隐藏

findElement():Event.findElement(event,tagName)->Element,与element()方法不同的是,他会查找事件源结点的指定tag的父结点或"附近"结点

其实findElement()是这么实现的
findElement: function(event, tagName) {
    var element = Event.element(event);
    while (element.parentNode && (!element.tagName ||
          (element.tagName.toUpperCase() != tagName.toUpperCase())))
      element = element.parentNode;//循环查找事件源的父结点
    return element;
}

Event.observe(document.body,'click',function(event){
var elt=Event.findElement(event,'P');
if(elt!=document)//不隐藏整个文档
$(elt).hide();
});
//若点击了p或者p的子结点,p隐藏


isLeftClick(): Event.isLeftClick(event)->Boolean,一看就知道,是否点击鼠标左键

observe()/stopObserving():Event.observe(element,eventName,handler[,useCapture=false]),添加/删除处理事件.

需要注意以下几点:

pointerX(event)/pointY(event):获取鼠标点击坐标(相对于文档左上角)

stop(event): 停止事件冒泡 默认点击元素时会先执行自身的处理函数(如果存在),然后处理父元素的点击处理函数(如果存在),这就是冒泡.使用stop()可以防止事件冒泡

uoloadCache():释放缓存,防止IE内存泄露