大佬教程收集整理的这篇文章主要介绍了javascript – 是否可以在常规对象(而不是DOM对象)上分派事件?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
EventTarget
接口. EventTarget由
DOM Events规范定义,但您不需要是实现它的DOM对象.窗口,XMLHttpRequest和FileReader是实现EventTarget的其他浏览器对象模型对象.
不幸的是,没有简单的方法来捎带浏览器的本机实现的事件目标…你可以尝试从浏览器对象继承使用一个作为原型属性,但这是非常不可靠的一般.但是,编写代码以简单的JavaScript来实现所有的方法并不难,
function CustomEventTarget() { this._init(); } CustomEventTarget.prototype._init= function() { this._registrations= {}; }; CustomEventTarget.prototype._getListeners= function(type,useCapture) { var captype= (useCapture? '1' : '0')+type; if (!(captype in this._registrations)) this._registrations[captype]= []; return this._registrations[captype]; }; CustomEventTarget.prototype.addEventListener= function(type,listener,useCapture) { var listeners= this._getListeners(type,useCapture); var ix= listeners.indexOf(listener); if (ix===-1) listeners.push(listener); }; CustomEventTarget.prototype.removeEventListener= function(type,useCapture); var ix= listeners.indexOf(listener); if (ix!==-1) listeners.splice(ix,1); }; CustomEventTarget.prototype.dispatchEvent= function(evt) { var listeners= this._getListeners(evt.type,false).slice(); for (var i= 0; i<listeners.length; i++) listeners[i].call(this,evt); return !evt.defaultPrevented; };
注意:上面的代码是我的头顶部,未经测试,但可能会工作.但是它有一些限制,如果Event对象支持DOM Level 3 defaultPrevented属性,而不支持DOM Level 3 stopImmediatePropagation()(这是不可能实现的,除非您依赖于自己的Event对象来显示它,否则支持dispatchEvent返回值)财产).还没有实现层次结构或捕获/冒泡.
所以海事组织:通过尝试编写参与DOM事件模型的代码,你不会有太多的收获.对于简单的JS回调工作,我只是随着你自己的临时执行监听器列表.
以上是大佬教程为你收集整理的javascript – 是否可以在常规对象(而不是DOM对象)上分派事件?全部内容,希望文章能够帮你解决javascript – 是否可以在常规对象(而不是DOM对象)上分派事件?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。