Safari 中的 EventTarget 接口

2023-12-30

我开始延长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.addEventListenertrue)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Safari 中的 EventTarget 接口 的相关文章

随机推荐