4

据我所知,getElementsByName是在 中定义的函数HTMLDocument,并且HTMLDocument继承自Document,并且Document继承自Node.

那么为什么我可以Document.prototype.getElementsByName在 Chrome 中看到但在 Firefox 中看不到?Chrome 没有实现 DOM2 规范吗?

4

1 回答 1

3

Chrome 不实现 DOM2 规范吗?

是的,可能不会。我猜他们至少实现了DOM 3,如果不是更新的 版本:-)

但是,那些也没有定义getElementsByName。那么他们是怎么得到这个的呢?它实际上是在 HTML5 ( WHATWG / W3 ) 的Document 部分界面上指定的:

DOM 规范定义了一个 Document 接口,这个 [HTML5] 规范显着扩展了 […]

http://dev.w3.org/html5/spec-LC/dom.html#documents-in-the-dom我找到了注释

因为 HTMLDocument 接口现在是使用特定于绑定的转换方法获得的,而不是简单地作为文档对象的主要接口,所以它不再被定义为从 Document 继承。

因此,这些接口的规范细节仍在进行中,并且变化多端。请注意,浏览器甚至不应该导出任何类型的DocumentPrototype- 规范只定义接口,而不是它们的确切 EcmaScript 绑定表示。 WebIDL 可以

所以 Chrome 确实遵循较新的规范(但仍然有一些HTMLDocument?),而 Firefox 实现的是旧版本。然而,真正重要的是这些方法确实存在于每个地方window.document——而不是它们是如何到达那里的:-)

于 2014-02-14T06:28:26.407 回答