4

私が知っているように、getElementsByNameは で定義された関数でHTMLDocumentあり、 からHTMLDocument継承しDocument、 からDocument継承しNodeます。

では、なぜDocument.prototype.getElementsByNameChrome では表示できるのに 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 からの継承として定義されなくなりました。

したがって、これらのインターフェイスの仕様の詳細はまだ進行中であり、変化しています。ブラウザは、いかなる種類のものもエクスポートすることさえ想定されていないことに注意してください- 仕様は、インターフェースの正確な EcmaScript バインディング表現ではなく、インターフェースDocumentPrototypeを定義するだけです。 WebIDL します。

そのため、Chrome は新しい仕様に準拠していますが (ただし、まだいくつHTMLDocumentかの仕様があります)、Firefox は古いバージョンを実装しています。ただし、これらのメソッドがすべてに存在することだけが本当に重要ですwindow.document-それらがどのようにそこに到達したかではありません:-)

于 2014-02-14T06:28:26.407 に答える