jQuery се превръща в де-факто стандарт…

Докато чакаме интеграцията на jQuery със Zend Framework, след като много хора се учудиха на първоначалния избор на Dojo за Zend Framework 1.6, вече имаме новина (по-скоро две новини), която показва, че jQueryсе превръща в де факто стандарта за JavaScript библотека. Първо:

…Microsoft is looking to make jQuery part of their official development platform. Their JavaScript offering today includes the ASP.NET Ajax Framework and they’re looking to expand it with the use of jQuery. This means that jQuery will be distributed with Visual Studio…

и второ:

…Nokia is looking to use jQuery to develop applications for their WebKit-based Web Run-Time. The run-time is a stripped-down browser rendering engine that allows for easy, but powerful, application development. This means that jQuery will be distributed on all Nokia phones that include the web run-time…

Ами какво да кажа – Майкрософт и Нокия са направили правилния избор ;) Така списъка от доволни клиенти на jQuery се увеличава с две нови попълнения, след като jQuery е избор на компании и продукти като Google, Intel, IBM, Intuit, Dell, Bank Of America, Digg, NBC, CBS, Ройтерс, WordPress и т.н.

QUnit: jQuery unit test framework

QUnit: jQuery Unit Test Framework
QUnit: jQuery Unit Test Framework

На Ajaxian видях ето това чудо:

Chad Myers has a simple look at GUnit, the jQuery based unit test framework. His article explains how to get going, and walks through a test like…

Повече може да прочетете тук:

jQuery: Be a JavaScript Rock Star!

jQuery: Be a JavaScript Rock Star!
jQuery: Be a JavaScript Rock Star!

jQuery е с нов външен вид на сайта, който е много по-весел от предния прото-уеб-две-нула сайт. Много ме кефи заигравката в заглавната част, която просто отвлича вниманието от слогана „Write Less, Do More“, и просто ти навира в очите „Be a JavaScript Rock Star!

Джон Ресиг работи върху нова библиотека за работа с CSS селектори

Джон Ресиг[/snimka]

Джон Ресиг, една от движещите сили зад jQuery, работи върху нов selector engine (моят опит да го преведа на български е библиотека за работа с CSS селектори), който да работи независимо от различните JavaScript библиотеки, да е по-бърз и по-малък:

…4x faster in Firefox 3, 3x faster in Opera 9, 1.5x faster in Safari 3 than the other major JavaScript libraries. It’s completely standalone (no library dependencies) and clocks in at under 4kb…

…And yes, I expect this engine to become the new default selector engine in jQuery.

Новината я прочетох на Ajaxian:

като оригиналния пост може да намерите тук:

а кода на библиотеката (който е готов до момента) – тук:

Internet Explorer, jQuery, AJAX … егати комбинацията

Няма такава боза като Internet Explorer. Просто няма. Супер непредсказуемо се дъни на най-неочакваните места, което прави дебъгването истински кошмар. Ето последното ми преживяване: работя върху интерфейс, който е супер тежко натоварен със всякакви AJAX и DHTML красоти, и който е много важно да работи навсякъде. Най-големия помощник в тази задача е jQuery, който работи супер стабилно навсякъде, и може да ти спести по-голямата част от cross-compatibility проблемите при „мултиплатформеността“ да се работе с много браузъри. За съжаление, това не винаги помага. При рутинна проверка за това как върви интерфейса под IE6, излиза следната грешка:

Could not complete the operation due to error 80020101

При проверка с IE7, отново на същото място от тестовете излиза същата грешка. Така, супер описателно съобщение, нали … Преравям интернета да търся хора с моя проблем, и да видя как може да се реши, обаче не намерих нищо – само оплаквания, и разни хленчения по форумите. Ами като не мога да го реша проблема, да пробвам да го заобиколя, а ? Грешката се проявява, когато jQuery получи като резултат от AJAX заявка HTML, който след това се инжектира в кода. Всичко това се прави супер кадърно от jQuery, като кода който ще се инжектира се проверя за <script> блокове, които се интерпретират (т.е. eval()-ват се), така че всичко работи все едно че кода си е бил там още при зареждането на страницата. Първо проверих дали кода е валиден (`щото IE има навика да забива при определина счепина структура), а длед това започнах да махам едно по едно нещата от кода и да гледам кога няма да се появи грешката. За мой късмет махнах <script>-овете първо, и след като видях, че проблема не е от викането на външни *.js файлове, оказа се че именно eval()-натите блокове чупят нещата. Тестването обаче ми разгонва фамилията, защото се скъсах да цъкам докато стане време да се появи грешката. Както и да е, видях какво предизвиква проблема, и реших да тествам „контролно“ дали IE по принцип имат проблеми с eval()-ването от AJAX отговори. Познайте … няма! Сега, познайте къде е проблема … в коментарите! Удивително, а ? Значи, от дълбока древност, при писането на JavaScript в inline блокове в кода винаги слагам HTML коментари. Верно, че главно античните браузъри имаха проблеми с показването на JavaScript-а, и заради това се слагат тези коментари. Има и други причини, но те изглеждат много невероятни – като например някой да напише такъв CSS:

script {display: block;}

Както и да е. Имено тези коментари оцапват положението. Пример – ето това не работи:

<script  type="text/javascript"><!--//
alert(123);
//--></script>

а ето това работи:

<script  type="text/javascript">
alert(123);
</script>

Правете си изводите. Този тъп проблем го има не само в IE6, но и в IE7 (интересно има ли го в IE8). Никой друг браузър (Firfox 2, Firefox 3, Safari 3) не се чупи. Шибана мръстна групост.

Изпреварващо зареждане на изображения с jQuery

Наистина интересно решение на стар проблем, който така или иначе има алтернативи са справянето с него, но пък сега има такова с jQuery ;) Още повече, че основния фокус пада върху изображения, използвани в CSS файлове:

We recently put out a super handy jQuery plugin for pre-caching all images referenced in linked/imported CSS files.
It’s particularly useful for apps with overlays, yet-to-be embedded content, etc. It sure beats maintaining arrays of image paths or making complex CSS sprites.

Повече може да прочетете тук:

jsTree: jQuery-базиран компонент за дърво

Днес видях нещо на Ajaxian, което ми хареса. Наши момчета са написали този плъгин за jQuery с който може да се направи „дърво“ – jsTree (да се илюстрира дървовидна структура). По-подробно представяне може са намерите тук:

самия проект може да намерите тук:

а демострация може да намерите ето тук:

Ще се радвам да виждам повече български проекти с отворен код. Поздрави на Иван Божанов и Илия Горанов за свършената работа.

jQuery UI 1.5: Effects, API, and Themes

Преди около седмица излезе новата версия на помощната библиотека към jQuery, а именно jQuery UI. Основните промени са в пренаписване на API-то, и подобрения при ефектите. Допълнително има инструмент за правене на сопбствени теми. Повече информация може да видите от официалното съобщение тук:

или като мен от страницата на Ajaxian:

jQuery Release 1.2.6

Толкова неща имам „задържани“ като чернови, че тази събота и неделя се скъсах да пиша в блога. След това сигурно пак няма да влезе нищо за цял месец ;) Както и да е, да се фокусираме на интересните новини.

Последните седмици имаше две събития на които трябваше да обърна особенно внимание. И двете са нови версии – едното е новата версия на Kiax за която преди малко писах, а другото е новата версия на jQuery –  jQuery 1.2.6!

На прима виста се набива на очи скока от 1.2.3 на 1.2.6, което означава, че бая работа е хвърлена по новата версия – никой не прави такова прескачане само заради няколко оправени бъга. Най-голямата гордост на тази версия са подобренията в скороста, като най-важното е че работата със събитията е вече два пъти по-бърза. За мен (а и за коментара на Ajaxian от линка по-долу), е добавянето като core възможност да си мериш разстояния и отстъпи – нещо което преди беше на плъгин (нямам нищо против плъгините, просто поддържането на основния пакет е по-добро).

Повече може да прочетете тук:

PS. Пак се заканвам, че по-късно ще пиша по болната ми тема аз поддържанието на проект с отворен код, колко време отнема, колко работа, и т.н. Сигурно ще бъде супер егоистична оценката ми, но пък ще говоря от опит ;)

Смотаният IE…

Е няма такава боза като Internet Explorer … Поредната глупава издънка, която вчера трябваше да се търси и оправя. Има JavaScript, който е закачен за $(document).ready(), който пък създава нови елементи в DOM дървото. Под Firefox всичко е ок, но в IE след показването на новите елементи браузърът показва предупреждение с надпис "Operation Aborted", и след това показва страница за грешка, все едно адреса който се опитвате да заресите не съществува. Супер, супер тъпо.

Какво се оказа – въпреки че сме се закачили към събитието, което се пуска когато страницата е заредена, това време е прекалено рано за IE за да започне да рисува нови DOM елементи. Решението – да се отложи извикването на функцията закачена към това събитие с таймаут от две секунди! Е не е ли тъпо ?