2012-03-21 12 views
36

utilizzando jQuery posso ottenere facilmente il numero di DOM elemetns utilizzato da una pagina Web:Come ottenere il numero di elementi DOM utilizzati in una pagina web

$('*').length; 

Ma non tutti i siti web utilizzano jQuery.

Quindi la mia domanda è: come ottenere il numero di elementi DOM utilizzati in una pagina Web utilizzando la console javascript e js pure.

+0

presumo che significhi che possiamo ignorare i problemi di IE ... – zzzzBov

+0

@zzzzBov - Che cosa ti porta a quell'ipotesi? Perché i problemi di IE sarebbero comunque significativi in ​​questa situazione? – Quentin

+0

@ Quentin, vedere la seconda parte della mia risposta. Le versioni precedenti di IE non supportano 'querySelectorAll'. – zzzzBov

risposta

56

Supponendo vuoi dire " HTMLElementNodes "al contrario di" Tutti i nodi "(che includerebbe elementi come i nodi di testo ed è anche saltato dall'esempio jQuery) quindi:

document.getElementsByTagName('*').length 

Questo richiede comunque l'uso di DOM. Pure JavaScript non può interagire con un documento HTML se non come una stringa di testo.

+0

bello. Ho appena creato un bookmarklet basato su questo: https://github.com/lingtalfi/count-dom-nodes-bookmarklet – ling

14

E 'abbastanza semplice, in realtà:

document.getElementsByTagName('*').length 

Se si può ignorare i browser più vecchi, si potrebbe anche conservare alcune delle sintassi jQuery-come con:

var $; 
$ = document.querySelectorAll.bind(document); 
$('*').length; 
+1

'querySelectorAll' ha bisogno di' this' per essere 'document'. Non puoi chiamarlo correttamente senza il contesto dell'oggetto 'document' in modo che il codice fallisca (almeno in Chrome). – Quentin

+2

whoops, ho dimenticato di aggiungere 'bind'. – zzzzBov

Problemi correlati