我最近在确定浏览器对某些 DOM 功能的支持时遇到了问题。其中之一是 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(不幸的是,我没有权限使用 Windows 来检查 IE 对它的看法)。
根据 DOM4 - Free Editor's Draft 5 April 2012 [http://dom.spec.whatwg.org/#element],子元素应该是元素对象原型的一部分。显然 Chrome、Safari 和 Opera 的 Element 对象不包含这样的方法!
我曾尝试检查 HTMLCollection 和 Node 的原型(我还测试了 HTMLParagraphElement 和 HTMLBodyElement),但它们似乎都不包含名为“children”的方法(Firefox 除外)。如何让我的测试跨浏览器工作?我不想为此使用任何外部库,因为这是我自己的小库。