Liste de toutes les propriétés de l'objet de la fenêtre?
Je suis à la recherche d' (dynamiquement) d'obtenir une liste d'éléments HTML que le navigateur est actuellement au courant, tel que HTMLPreElement
, HTMLSpanElement
etc. Ces objets sont globales, c'est à dire
console.log('HTMLPreElement' in window); //=> true
J'ai donc pensé que je serais en mesure d'utiliser getOwnPropertyNames
comme ceci:
console.log(Object.getOwnPropertyNames(window));
pour obtenir la liste complète des propriétés globales (MDN états qui renvoie à la fois énumérable et non énumérable propriétés).
À l'aide de la ci-dessus, j'obtiens un tableau avec près de 70 propriété nanes. Mais, il ne comprend pas les objets comme les HTMLPreElement
seule HTMLElement
. J'ai aussi essayé:
console.log(Object.getOwnPropertyNames(window.Window.prototype));
qui ramène une plus grande liste (y compris addEventListener
etc) mais encore une fois, pas de HTMLPreElement
.
Alors, où diable avez-ces HTML{Tag}Element
objets résident?
for...in
) mais Firefox refuse à la liste.Mais il est intéressant de savoir pourquoi vous ne pouvez pas le voir dans Firefox, il est intéressant de ne pas moins pour savoir, pourquoi s'en faire...?
au début, j'ai tout simplement besoin d'une liste d'étiquettes valides, mais quand je ne pouvais pas les voir, j'étais plus intéressé dans pourquoi ils n'apparaissent pas.
OriginalL'auteur Graham | 2012-04-29
Vous devez vous connecter pour publier un commentaire.
Dans Firefox, il semble être le comportement d'éléments que leur objet n'est pas ajouté sauf sur demande explicite comme une variable globale ou des biens. Peut-être que Firefox paresseux charge dans l'environnement de sorte qu'ils ne consomment pas de mémoire, sauf s'ils sont réellement nécessaires.
Il semble qu'ils ne s'affichent pas lorsque vous demandant simplement les clés de l'objet global via
Object.getOwnPropertyNames
sauf ils ont d'abord été explicitement mentionnés comme décrit ci-dessus.http://jsfiddle.net/mBAHm/
J'espérais qu'à un certain moment vous allez à ajouter toutes ces informations pour votre réponse! 😉 Il s'est avéré que votre réponse est la bonne, mais Firefox était juste de faire les choses difficiles. 🙂
OriginalL'auteur
C'est ce que vous avez besoin?
HTMLElement
pour moi...OriginalL'auteur Chopin
OriginalL'auteur Michael Price