Safari中的EventTarget接口

Pau*_*lCo 6 javascript safari webkit

我开始EventTarget通过添加一些有用的东西来扩展接口,prototypes但是随后我在Safari 8上对其进行了测试并得到:

[Error] ReferenceError: Can't find variable: EventTarget
Run Code Online (Sandbox Code Playgroud)

我在MDN上发现Safari浏览器window.EventTarget不存在”

这个问题看起来确实很有趣,但它与IE8有关。

因此,我想知道是否可以在Safari上访问对EventTarget接口的引用,或者是一种解决方法,可以使用类似的代码EventTarget.prototype.hasEventListener并且EventTarget.prototype.hasEventListener在Safari上没有出现任何错误?

编辑 我发现一个有趣的提交,说它是在15年9月12日实现的(从时间戳记起),但是它肯定在Safari 9.1中不起作用

Pau*_*lCo 6

解决方法:

我只是将Element界面用作 Safari 的后备

var EventTarget = EventTarget || Element;
EventTarget.prototype.addEventListener = function(){/*Some magic here*/};
Run Code Online (Sandbox Code Playgroud)

我还检查了 Element 继承prototypes自 EventTarget 接口,并且确实如此!(document.body.addEventListener == EventTarget.prototype.addEventListener返回true

  • 是的,超级烦人。我想从我想要的任何东西发出事件,而不仅仅是 DOM 元素。 (2认同)