<a id=aid href=#>Click me!</a> <script> Array.prototype.append = function(obj, nodup) { if(!(nodup && this.contains(obj))) { this[this.length] = obj; } } EventRouter = function(el, eventType) { this.lsnrs = new Array(); this.el = el; el.eventRouter = this; el[eventType] = EventRouter.callback; } EventRouter.prototype.addListener = function(lsnr) { this.lsnrs.append(lsnr); } EventRouter.prototype.notify = function(e) { var lsnrs = this.lsnrs; for(var i=0; i < lsnrs.length; i++) { var lsnr=lsnrs[i]; lsnr.call(this, e); } } EventRouter.callback = function(event) { var e = event || window.event; var router = this.eventRouter; router.notify(e); } var aid = document.getElementById("aid"); var ev = new EventRouter(aid, "onclick"); ev.addListener(function(){alert("Click!");}); </script>