最近、特定のDOM機能に対するブラウザーのサポートを決定する際に問題に直面しました。それらの1つはElement.children機能でしたが、それでも私は頭痛の種になっています。コードに次の行があります。
var NATIVE_CHILDREN = Element.prototype.hasOwnProperty('children');
ブラウザがElement.children-feature [https://developer.mozilla.org/en/DOM/Element.children]をサポートしているかどうかを確認することになっています。
MDNとクイックテストによると、すべての主要なブラウザがこの機能をサポートしています。
FirefoxのFirebugでは、NATIVE_CHILDRENの値はtrueであると予想されます。驚いたことに、Chrome、Safari、Operaでは、値はfalseです(残念ながら、IEがそれについてどう考えているかを確認するためにWindowsでマシンを操作するためのアクセス権がありません)。
DOM4-Free Editor's Draft 5 April 2012 [http://dom.spec.whatwg.org/#element]によると、子はElementオブジェクトのプロトタイプの一部である必要があります。どうやらChrome、Safari、OperaのElementオブジェクトにはそのようなメソッドは含まれていません!
HTMLCollectionとNodeのプロトタイプをチェックしようとしましたが(HTMLParagraphElementとHTMLBodyElementもテストしました)、「children」というメソッドが含まれていないようです(Firefoxを除く)。クロスブラウザで動作するようにテストを行うにはどうすればよいですか?これは私自身の小さなライブラリ用であるため、このために外部ライブラリを使用したくありません。