До скоро начините за търсене на елементи в DOM дървото на един HTML докумен бяха ограничени до методите getElementById и getElementsByTagName, които не предоставят кой знае какви възможности. За уеб-разработчиците посочването на конкретни елементи чрез CSS е втора природа и за това всички Javascript библиотеки включват собствени методи за търсене на елементи чрез CSS селектори. Тези методи обаче могат сериозно да забавят уеб-приложението ви, колко по-добре би било, ако тази функционалност беше вградена в браузъра? Още повече, че браузърите имат тази функционалност в наличност, нали чрез нея се прилагат стиловете от CSS към елементите в DOM. Е, желанията на програмистите бяха чути от W3C и вече е налице W3C Selector API. Включени са два метода – querySelector и querySelectorAll, и StaticNodeList – списък с елементи, връщан като резултат от тези методи. Методите могат да се извикват от document обекта или от произволен DOM елемент в зависимост от областта, в която търсите. Екипите на jQuery и Prototype вече работят по използването на новите методи в браузърите, които ги поддържат, а The Dojo Toolkit, DOMAssistant и base2 вече са ги включили.
А кои браузъри поддържат и кои не поддържат Selector API? Поддръжката във Forefox вече е вградена в nightly builds и ще е част от новите възможности на версия 3.1. Сафари поддържа методите от доста време, Опера също го включва във версията, направена за да премине Acid3 теста. Колкото до IE, поддръжката е включена в осма версия, но предвид ограничената поддръжка на CSS3, предвидена за тази версия, пак ще изостава сериозно като функционалност спрямо останалите.
Етикети: CSS, DOM, javascript, библиотеки, браузъри
Оо, това е невероятно!
Сега предполагам ще започнат доста дискусии по блоговете дали и до колко да се ползва новата функционалност, как да се използва така, че да деградира елегантно под IE7 и т.н.
Но важното е, че се поставя основа на нещо много важно, което ще можем да изпозлваме след 5-6-7 години, надявам се. Нещо, което може да съкрати JavaScript кода в пъти.
За ползващите библиотеки въпросът не стои – библиотеките (ще) използват новите методи, когато са налични, IE 6 и 7 ще трябва да действат по стария начин и ще са бавни, дано това накара повече хора да се откажат от тях. По-сложен е въпроса с поддръжката на CSS3 селектори в IE8, но предполагам, че и там ще трябва да се провери версията на браузъра, и ако не поддържа селектора, действаме по стария начин и готово.