在FF下,我要创建一个function来响应事件var func;
var owner;
var ps = new Array();
.......
return function(e){owner[func].apply(owner, ps);}其中owner为相应的对象,func为方法名称,ps是调用时的参数列表,但是我没办法取到运行时的event对象,各位帮我看看,谢谢

解决方案 »

  1.   

    要取到运行时的envent   可不可以在每个事件发生的时候     都先返回一个值   比如设置一个全局变量.... 
      

  2.   


    return function(e)
    {
        ps.push(e)
        owner[func].apply(owner, ps);
    }事件作为函数的最后一个参数
      

  3.   

    return function(e){
          ps[ps.length] = e;
          owner[func].apply(owner, ps);
    }
    //在func中最后一个参数就是e了
      

  4.   


    function CreateFunction (owner, func)
    {
        if(null==owner)owner = window;
        ps = new Array();
        for(i=2;i<arguments.length;++i)
    ps.push(arguments[i]);
        return function(e){owner[func].apply(owner, ps);}
    }
      

  5.   

    function CreateFunction (owner, func)
    {
        if(null==owner)owner = window;
        ps = new Array();
        for(i=2;i<arguments.length;++i)
            ps.push(arguments[i]);
        return function(e){owner[func].apply(owner, ps);}
    }这个函数的调用场合??不在事件里触发根本得不到event对象的
      

  6.   

    var f = CreateFunction.........obj.addEventListener(evt, f, false);事件是可以正确触发的并不存在楼上说的情况,事件触发后调用了匿名方法function(e){owner[func].apply(owner, ps);}并且把event作为参数传到e,只是这个时候,我取不到e而已。
    因为
    ps.push(e);
    owner[func].apply(owner, ps);
    这段代码
    这个e并不是参数列表里的e,而是从当前上下文中找e。
    我现在是想找到一个方法,让这个匿名方法在执行时候才去参数里找到event
      

  7.   

    <html>
    <body><button id="ff">Test<button><script type="text/javascript">function CreateFunction (owner, func)
    {
      if(null==owner)owner = window;
      ps = new Array();
      for(i=2;i<arguments.length;++i)
      ps.push(arguments[i]);
      return function(e){
          ps[ps.length] = e;
          owner[func].apply(owner, ps);
      }
    }var owner = {
       "a": function(){
           alert(arguments[arguments.length-1].target.id);//ff
       }
    }
    var obj = document.getElementById("ff");
    var f = CreateFunction(owner, "a");obj.addEventListener("click", f, false);
    </script></body>
    </html>FF3.6测试通过,event事件参数传递进入了