私が知っているように、getElementsByName
は で定義された関数でHTMLDocument
あり、 からHTMLDocument
継承しDocument
、 からDocument
継承しNode
ます。
では、なぜDocument.prototype.getElementsByName
Chrome では表示できるのに Firefox では表示できないのですか?Chrome は DOM2 仕様を実装していませんか?
私が知っているように、getElementsByName
は で定義された関数でHTMLDocument
あり、 からHTMLDocument
継承しDocument
、 からDocument
継承しNode
ます。
では、なぜDocument.prototype.getElementsByName
Chrome では表示できるのに Firefox では表示できないのですか?Chrome は DOM2 仕様を実装していませんか?
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 バインディング表現ではなく、インターフェース WebIDL します。DocumentPrototype
を定義するだけです。
そのため、Chrome は新しい仕様に準拠していますが (ただし、まだいくつHTMLDocument
かの仕様があります)、Firefox は古いバージョンを実装しています。ただし、これらのメソッドがすべてに存在することだけが本当に重要ですwindow.document
-それらがどのようにそこに到達したかではありません:-)