首页 新闻 会员 周边

谁能给我一个 兼容 ff ie chrome 封装好的 event??

0
[已关闭问题] 关闭于 2011-06-27 16:31

这个是我自己封装的,可是没有成功!因为 在FF 下 找不到 event

var EventListener={};
(
function(obj){
var arr=[];
obj.getEvent
=function(e){
var keynum=null;


if(window.event){
e
= window.event
keynum
= e.keyCode
}
else {
keynum
= e.which;
}

e.keynum
= keynum;
return e;
}

var onkeypressfun=function(e){
var keynum = obj.getEvent(e).keynum;

for(var i=0;i<arr.length;i++){
arr[i](keynum);
}
}
//还是不行
document.addEventListener(
"keypress",function(){onkeypressfun(event)},false);


//_fun(keynum) 一个带参数的 函数
obj.add = function(_fun){
arr.add(_fun);
}
}
)(EventListener);

下面是参考资料,可是封装的不好

谁有封装好的 拿来学习学习

  1. if( typeof(window.event)=="undefined" ){  
  2.     eval("var event = new Object;");  
  3. }  
  4. // Firefox Event << IE Event   
  5. // bind ie's methods on firefox  
  6. function jskitFFEvent(e){  
  7.     if( typeof(document.all)=="undefined" ){  
  8.         event = e;  
  9.         event.srcElement = e.target;  
  10.     }  
  11.     return true;  
  12. };  
  13.   
  14. //然后在绑定事件的地方:  
  15. if ( typeof(document.all)=="undefined" ) {//for Firefox  
  16.     var _eventName = rName.replace(/on(.*)/i,'$1');  
  17.     eval("_bk = rObj.addEventListener(\""+_eventName+"\", function(){jskitFFEvent(event);"+rHandler+"();}, true);");  
  18. else{//for IE  
  19.     eval("_bk = rObj.attachEvent(\""+rName+"\","+ rHandler+");");  
  20. }  
  21. //这里rHandler是传递过来的方法名  
  22. //调用的方式形如:  
  23. jskitEvents.add(myElement,"onclick","myClass.onclick");  
dbfox的主页 dbfox | 初学一级 | 园豆:2
提问于:2011-06-26 08:47
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册