Several methods of JavaScript registering events example code

From , 2 Years ago, written in JavaScript, viewed 242 times.
URL https://pastebin.vip/view/fa636c3d
  1. (function(){
  2. //进行库封装,防止对象污染
  3. window['cm']={};
  4. /**
  5. *给对象注册事件
  6. */
  7. var addListener=function(element,type,fn){
  8. if(typeof element == 'undefined') return false;
  9. if(element.addEventListener){
  10. element.addEventListener(type,fn,false);
  11. }else if(element.attachEvent){
  12. //将事件缓冲到该标签上,已解决this指向window(现fn内this指向element)和移除匿名事件问题
  13. var _EventRef='_'+type+'EventRef';
  14. if(!element[_EventRef]){
  15. element[_EventRef]=[];
  16. }
  17. var _EventRefs=element[_EventRef];
  18. var index;
  19. for(index in _EventRefs){
  20. if(_EventRefs[index]['realFn']==fn){
  21. return;
  22. }
  23. }
  24. var nestFn=function(){
  25. fn.apply(element,arguments);
  26. };
  27. element[_EventRef].push({'realFn':fn,'nestFn':nestFn});
  28. element.attachEvent('on'+type,nestFn);
  29. }else{
  30. element['on'+type]=fn;
  31. }
  32. };
  33. window['cm']['addListener']=addListener;
  34. /**
  35. *移除对象上已注册事件
  36. */
  37. var removeListener=function(element,type,fn){
  38. if(typeof element == 'undefined') return false;
  39. if(element.removeEventListener){
  40. element.removeEventListener(type,fn,false);
  41. }else if(element.detachEvent){
  42. var _EventRef='_'+type+'EventRef';
  43. if(!element[_EventRef]){
  44. element[_EventRef]=[];
  45. }
  46. var _EventRefs=element[_EventRef]
  47. var index;
  48. var nestFn;
  49. for(index in _EventRefs){
  50. if(_EventRefs[index]['realFn']==fn){
  51. nestFn=_EventRefs[index]['nestFn'];
  52. if(index==_EventRefs.length-1){
  53. element[_EventRef]=_EventRefs.slice(0,index);
  54. }else{
  55. element[_EventRef]=_EventRefs.slice(0,index).concat(_EventRefs.slice(index+1,_EventRefs.length-1));
  56. }
  57. break;
  58. }
  59. }
  60. if(nestFn){
  61. element.detachEvent('on'+type,nestFn);
  62. }
  63. }else{
  64. element['on'+type]=null;
  65. }
  66. };
  67. })();
  68. //javascript/7071

Reply to "Several methods of JavaScript registering events example code"

Here you can reply to the paste above

captcha

https://burned.cc - Burn After Reading Website