⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eventrouter.js

📁 征服Ajax/施伟伟, 张蓓编著 ISBN号: 7-115-14706-X 出版发行项: 北京-人民邮电出版社 2006
💻 JS
字号:
/*
event router object for robust cross-browser implementation of Observer pattern
for the 'classic' javascript event model (the newer addEventListener() and attachEvent()
does a similar job, but is somewhat flaky - see Quirskmode for a discussion [http://www.quirksmode.org/js/events_advanced.html].

requires extras-array.js

Dave Crane 2005
*/

/* namespacing object */
var jsEvent=new Array();

/*
constructor function, specifying DOM element (or other object) to listen to,
and event type, which should be a valid browser event e.g. 'onmouseover' 'onclick' for DOM
elements
*/
jsEvent.EventRouter=function(el,eventType){
  this.lsnrs=new Array();
  this.el=el;
  el.eventRouter=this;
  el[eventType]=jsEvent.EventRouter.callback;
}

/*
convenience method for adding a listener
*/
jsEvent.EventRouter.prototype.addListener=function(lsnr){
  this.lsnrs.append(lsnr,true);
}

/*
convenience method for removing a listener
*/
jsEvent.EventRouter.prototype.removeListener=function(lsnr){
  this.lsnrs.remove(lsnr);
}

/*
notify all listeners of an event - this is called by the callback, don't need
to invoke it yourself for DOM nodes, but if using bespoke events it is the
easiest way in
*/
jsEvent.EventRouter.prototype.notify=function(e){
  var lsnrs=this.lsnrs;
  for(var i=0;i<lsnrs.length;i++){
    var lsnr=lsnrs[i];
    if (lsnr && lsnr.call){
      lsnr.call(this,e);
    }
  }
}

/*
'static' callback event handler, for which 'this' will be the DOM element. Simply
locate the reference to the router object, and notify() it
*/
jsEvent.EventRouter.callback=function(event){
  var e=event || window.event;
  var router=this.eventRouter;
  router.notify(e)
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -