Implementace CSS3 selectorů v JavaScriptu

Pro účely jedné, velice speciální a nakonec nikdy nedokončené, zakázky, bylo potřeba vytvořit implementaci CSS3 selectorů v JavaScriptu. Implementace je hotová, funkční a otestovaná, ale již není potřeba, tak se o ní podělím alespoň tady na blogu.

Jedná se o (v rámci možností) kompletní implementaci, která si poradí i s takovými záludnostmi, jako je zápis pomocí unicode. Např. takovýto selector není problém:

:not(:root):not(form):first-child:not(:lang(en)) > div:first-child ~ div

Při hledání elementů se využívají pouze standardní DOM metody (tudíž žádná konverze na XPath, jak je bežné pro podobné knihovny psané pro prostředí Internetu). Script nebyl příliš optimalizováno z hlediska rychlosti a ani IE nebyl brán v potaz, neb to nebylo v zadání. Důraz byl kladen především na věrnou implenetaci všech selectorů dle specifikace od W3C.

https://github.com/jkbr/Selectors

Vyzkoušet možnosti knihovny je možné přímo z prohlížeče na speciální testovací stránce.

K dispozici je také aplikace na oficiální sadu testů z dílny W3C. Při zkoušení těchto testů je potřeba mít na paměti, že při aplikování vlastností není brána v potaz priorita, takže i v případě, že např. barva nesedí, nemusí to nutně znamenat, že jde o chybu scriptu (a vice versa).

Tags: , ,

Leave a Reply