Tutti sanno cosa selettori DOM come document.getElementByID(...)
e document.querySelector(...)
fanno e come lo si può utilizzare con le classi, gli attributi, id e così via.Come funziona querySelector sotto il cofano?
Ma non sono riuscito a trovare come funziona sotto il cofano (posso trovare perf test comparisons ma sono interessato alla teoria). So che la pagina html viene caricata, analizzata dal browser e viene costruito l'albero DOM. Ma come ognuno dei selettori attraversa l'albero DOM per trovare gli elementi.
ho preso uno sguardo a un spec for parsing algorithm e leggere davvero bello explanation how Browsers work, ma anche dà spiegazione eccellente di HTML, parsing CSS e rendendo il flusso non dà spiegazione di come ciascuno di questi selettori attraversa questo albero di trovare gli elementi.
presumo che, al fine di trovare qualcosa di simile .black
o span
ha bisogno di attraversare tutto l'albero, ma per trovare #id
può essere attraversando qualche struttura dati aggiuntivi e rendendo così molto più veloce. Si prega di non scrivere le vostre ipotesi, sto cercando conoscenze concrete con backup alle specifiche o all'implementazione in alcuni browser.
penso che questo sarebbe meglio chiesto a http://programmers.stackexchange.com – spender
Questo è un dettaglio di implementazione, e possono variare da quale motore che si sta utilizzando. Dovrai leggere il codice sorgente di varie implementazioni se vuoi sapere. Vedi http://en.wikipedia.org/wiki/List_of_ECMAScript_engines come punto di partenza. – slashingweapon
@slashingweapon Non lo penso davvero. Questa è una funzionalità piuttosto semplice e molto probabilmente verrà implementata in modo simile nei principali browser. –