返回列表

caller的应用场景

默认分类 2011-01-13 02:51:57

caller作为function的一个非常重要的属性,在很多情况下都会用到,下面是caller的一个应用场景,应该能很好的说明caller的用途.
大家都知道在IE和Firefox下获取Event的差异很大,可以通过caller来解决这个问题.

function getEvent(){
     if(window.event)    {return window.event;}
     func=getEvent.caller;
     while(func!=null){
         var arg0=func.arguments[0];
         if(arg0){
             if((arg0.constructor==Event || arg0.constructor ==MouseEvent
                || arg0.constructor==KeyboardEvent)
                ||(typeof(arg0)=="object" && arg0.preventDefault 
                && arg0.stopPropagation)){
                 return arg0;
             }
         }
         func=func.caller;
     }
     return null;
}