在FF下,我要创建一个function来响应事件var func;
var owner;
var ps = new Array();
.......
return function(e){owner[func].apply(owner, ps);}其中owner为相应的对象,func为方法名称,ps是调用时的参数列表,但是我没办法取到运行时的event对象,各位帮我看看,谢谢
var owner;
var ps = new Array();
.......
return function(e){owner[func].apply(owner, ps);}其中owner为相应的对象,func为方法名称,ps是调用时的参数列表,但是我没办法取到运行时的event对象,各位帮我看看,谢谢
return function(e)
{
ps.push(e)
owner[func].apply(owner, ps);
}事件作为函数的最后一个参数
ps[ps.length] = e;
owner[func].apply(owner, ps);
}
//在func中最后一个参数就是e了
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);}
}
{
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对象的
因为
ps.push(e);
owner[func].apply(owner, ps);
这段代码
这个e并不是参数列表里的e,而是从当前上下文中找e。
我现在是想找到一个方法,让这个匿名方法在执行时候才去参数里找到event
<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事件参数传递进入了