Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Perchà© i browser non implementano un selettore E:has(F)

Link copiato negli appunti

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:

+--h2  #Element
  +--a  #Element
    +--  #text

JavaScript riesce nel compito di selezionare l'elemento h2 in base alla presenza dell'elemento a al suo interno perché lavora sul DOM inteso come una serie di instantanee (snapshot) dotate di vita autonoma. Invece, il parsing CSS avviene in modo completamente diverso.
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) significherebbe bloccare questa "incrementalità " per operare una selezione inversa.

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.

Ti consigliamo anche