A volte i produttori di browser ci fanno sentire come Alice nel paese delle meraviglie. Avevo recentemente proposto su www-style di implementare un selettore E:has(F)
sulla scia di quanto avviene in JQuery per il metodo omonimo. In preda all'entusiasmo avevo anche azzardato un paragone tra C++ e JavaScript, dicendo che se era possibile farlo con quest'ultimo, perché non è possibile anche col primo?
La realtà è ben diversa. Dato per esempio un elemento h2
che contenga un elemento a
, avremmo la seguente struttura DOM:
JavaScript riesce nel compito di selezionare l'elemento h2
a
Per esempio, il parser CSS di Firefox (nsCSSScanner.cpp nel codice sorgente) lavora non su segmenti, ma su un flusso continuo di token forniti all'atto del parsing delle dipendenze della pagina. Il parsing CSS avviene quindi in modo incrementale. Implementare il selettore E:has(F)
Dalle mie letture, infine, ho anche scoperto che un approccio di tipo DOM nel parsing è sempre molto "dispendioso", cosa che i CSS non possono permettersi di essere.