我想要(动态地)获取浏览器当前已知的 HTML 元素列表,例如
HTMLPreElement
、HTMLSpanElement
等。这些对象是全局的,即...console.log('HTMLPreElement' in window); //=> true
于是我以为我可以这样使用getOwnPropertyNames
:
console.log(Object.getOwnPropertyNames(window));
要获取全局属性的完整列表(MDN表示这将返回可枚举和不可枚举属性),可以使用以上方法。使用上述方法,我得到了一个大约有70个属性名的数组。但是它并不包括像HTMLPreElement
这样的对象 - 只有 HTMLElement
。我还尝试过:
console.log(Object.getOwnPropertyNames(window.Window.prototype));
这将返回一个更大的列表(包括addEventListener
等),但是再次没有HTMLPreElement
。
那么,这些HTML{Tag}Element
对象到底在哪里?
for...in
),但Firefox拒绝列出它们。 - Graham