Busco a (dinámicamente) obtener una lista de los elementos HTML que el navegador está actualmente en cuenta, tales como HTMLPreElement
, HTMLSpanElement
etc. Estos objetos son globales, es decir,¿Listar todas las propiedades del objeto ventana?
console.log('HTMLPreElement' in window); //=> true
así que pensé que sería capaz de utilizar getOwnPropertyNames
así:
console.log(Object.getOwnPropertyNames(window));
para obtener la lista completa de propiedades globales (MDN afirma que esto devuelve las propiedades enumerables y no enumerables).
Usando lo anterior, obtengo una matriz con alrededor de 70 nanes de propiedad. Pero, no incluye objetos como HTMLPreElement
- solo HTMLElement
. También probé:
console.log(Object.getOwnPropertyNames(window.Window.prototype));
nuevo que trae una lista más grande (incluyendo addEventListener
etc) pero de nuevo, no HTMLPreElement
.
Entonces, ¿dónde diablos residen estos objetos HTML{Tag}Element
?
Parece que esto hace el trabajo en WebKit (con sólo un simple 'para ... in'), pero Firefox se niega a enumerarlos. – Graham
Aunque es interesante saber por qué no puedes verlo en Firefox, es interesante no menos saber por qué te importa ...? – gdoron
@gdoron - al principio solo necesitaba una lista de etiquetas válidas, pero cuando no podía verlas, estaba más interesado en por qué no aparecían. – Graham