我开始延长EventTarget
界面中添加一些有用的prototypes
但后来我在 Safari 8 上测试了它并得到:
[Error] ReferenceError: Can't find variable: EventTarget
我发现MDN https://developer.mozilla.org/en-US/docs/Web/API/EventTarget that "window.EventTarget
不存在”对于Safari。
这个问题 https://stackoverflow.com/questions/19616538/is-it-possible-to-extend-the-eventtarget-interface看起来很有趣,但它是关于 IE8 的。
所以,我想知道是否可在 Safari 上访问对 EventTarget 接口的引用,或使用类似代码的解决方法EventTarget.prototype.hasEventListener
and EventTarget.prototype.hasEventListener
在 Safari 上没有出现任何错误?
Edit我发现了一个有趣的commit http://trac.webkit.org/changeset/189660上面说它是在 2015 年 9 月 12 日实现的(来自时间戳),但它肯定不适用于 Safari 9.1
解决方法:
我只是用了Element界面 https://developer.mozilla.org/en-US/docs/Web/API/Element作为 Safari 的后备方案
var EventTarget = EventTarget || Element;
EventTarget.prototype.addEventListener = function(){/*Some magic here*/};
我还检查了 Element 继承prototypes
从 EventTarget 接口,它确实如此! (document.body.addEventListener == EventTarget.prototype.addEventListener
回true
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)