【问题标题】:Is mozilla's cross browser addeventlistener shim implementation viablemozilla 的跨浏览器 addeventlistener shim 实现是否可行
【发布时间】:2012-12-04 16:05:19
【问题描述】:

我在 devloper.Mozilla 找到了这段代码。 addEventListener compatibility

该页面上的代码看起来是否可以让 addEventListener 跨浏览器?

我真的无法访问一堆旧浏览器来测试它,所以我想我先在这里问一下。

所有新浏览器都支持 addEventListener,所以没什么大不了的。我只是对可以为旧浏览器提供功能的东西以及 Mozzilla 的 shim 是否值得感兴趣。

我喜欢 jQuery、YUI 和原型之类的库,并且我知道这是使事件更容易的一种选择(就像所有 js 库一样)所以将此问题视为学术问题。为了学习精神。

【问题讨论】:

  • developer.mozilla.org => 我们的圣杯:D
  • 很好。对于 Web 脚本参考,它是无可匹敌的。

标签: javascript events addeventlistener shim


【解决方案1】:

您链接的代码看起来不错,据我所知它应该可以工作。但是,如果我是你,我会从深入研究 jQuery 源代码开始寻找他们是如何做到的,因为 jQuery 正在不断开发中,这与来自 d​​eveloper.Mozilla 的(假设)示例不同。

将 jQuery 替换为您认为可以使用的任何其他库。

【讨论】:

  • 所以从长远来看可能不可靠?
  • 不,应该很好,我只是说您还应该研究一些精心设计并在 Internet 上广泛使用的代码。我不会担心来自 mozilla 的代码不能在未来的浏览器上运行,因为它很可能会(我不知道关于事件绑定的 Javascript API 即将发生的变化)。
  • 关于 Mozilla 代码的一个技术问题。它故意忽略通常可能传递给addEventListener 的第三个属性。这样做是为了使代码更加跨浏览器,因为某些浏览器(即较旧的 IE)不支持绑定以捕获事件状态。
  • 哦,现在我明白了。没用捕获。无论如何,这甚至可以在旧浏览器上完成吗?我可以看到一些复杂的使用捕获模拟,但它似乎比有用的工作更多。穿越父母之类的。排序哪些节点的事件最先出现。
  • 在捕获阶段绑定到事件可能很有用,但鉴于它并非在每个浏览器中都实现,而且多年来人们不依赖它就可以做一些疯狂的事情,你可以(我认为)跳过支持捕获阶段(特别是如果您要实现跨浏览器兼容性)。你是对的,在某些浏览器中存在对捕获阶段的支持,但这是不值得的(除非你正在尝试做一些非常具体的事情)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-15
  • 1970-01-01
  • 2011-07-03
  • 2013-02-15
  • 1970-01-01
相关资源
最近更新 更多