Ода Ослиному Упорству.

Обожаю майкрософт!

Довелось мне тут по работе столкнуться с одной задачкой. Мой заказчик решил на своем сайте сделать окно приветствия — когда пользователь заходит на страницу регистрации, должно появиться всплывающее окно, в котором владелец сайта приветствует новоприбывшего будущего пользователя его ресурса.

И для этой незамысловатой цели он выбрал достаточно простую и удобную библиотеку iBox (http://www.ibegin.com/labs/ibox/. Она представляет собой кусок кода на JavaScript, который только то и делает, что генерит разнообразные всплывающие окошки. Кстати, довольно красивые и функциональные. Размер библиотеки — чуть больше 20 килобайт. В использовании простая как две копейки.

Ну так вот, соорудил он, значит, HTML-файл с приветствием, и вставил в код страницы регистрации такой вызов:

Пример кода:
<body onLoad="iBox.showURL('welcome.html','block','block')">

Суть проста: как только страница загрузилась — окно выпрыгнуло, как чертик из табакерки.

Код он вставил и решил проверить. Запустил — работает! Окно исправно появляется, все красиво и правильно.

Но, как и любой житель буржуинии (а заказчик — американец), он помешан на всяких там совместимостях, соответствиях стандартам и прочей подобной фигне. Поэтому он решил опробовать свое творение в различных броузерах.

Opera, Safari и FireFox показали одинаково красивые результаты. Но это американца не успокоило — надо же попробовать и на "флагмане ИТ-индустрии" - Internet Explorer'е. Ну и конечно тут возникла проблема. Точнее даже две.

Первая достаточно простая — найти тот самый интернет эксплорер (в простонародье - "ишак"). Дело в том, что, как и многие нормальные иностранцы, этот товарищ работает на макинтоше и, естественно, ишака там нет. Там сафари — всё умеет, со всем совместим, всё поддерживает и все им довольны.

Вторая проблема посерьезнее — когда он все же нашел машину с виндой, выяснилось, что в ишаке окно почему-то не выпрыгивает. Более того, сам ишак матерится на какую-то ошибку, толком не говоря, какую именно. Будто бы это военная тайна.

Собственно с этой проблемой американец и обратился ко мне.

Не буду рассказывать как я убивал час за часом пытаясь выяснить, что именно майкрософтовскому детищу не нравится и какие слова при этом из меня выходили — вы и сами догадаетесь. Скажу лишь, что подружить iBox с IE 6 мне так и не удалось.

Но причину такого упорного нежелания работать мне все же удалось выяснить.

Дело в следующем. Перед использованием функционала iBox, этой библиотеке нужно что-то там внутри себя проинициализировать. И в процессе инициализации она заранее создает несколько div'ов , которые позже используются для построения разных окошек. Но, как все вы знаете, DIV'ы можно создать только после того, как DOM страницы полностью загружена.

Как отловить этот момент? Правильно — привязаться событию onLoad тэга . Но ведь на этом же событии у нас уже висит обработчик, который поставил заказчик....

Ситуация такова: все нормальные броузеры начинают обрабатывать JavaScript-код (загруженный в секции нашей HTML-страницы) ПЕРЕД обработкой самой страницы. Поэтому код iBox в них прикрепляется в очередь обработчиков первым — до нашего iBox.showURL. Соответственно и выполняется он раньше нашего вызова. Таким образом получается, что, к моменту вызова iBox.showURL, библиотека уже проинициализирована и готова к работе.

Ишак же делает все наоборот — сперва пытается обработать наш вызов (и получает ошибку ведь компоненты библиотеки еще не готовы к работе), а уж потом проинициализировать саму библиотеку. Такой вот нелепый финт ушами. Никакие попытки обойти или изменить это поведение не привели к успеху, ишак — он и в африке ишак.

Итог: убито несколько часов, выпито много кофе, высказано много лестного в адрес Билла и компании, и лишний раз укреплена уверенность в том, что мелкомягкие думают задним местом, через которое у них потом все и работает.


Бабах Большой Адронный Коллайдер!

БАБАААХХХХХ!

Дым рассеивается, у ворот рая стоят Равшан и Джумшут в белых халатах и в очках. Открываются ворота. Выходит Апостол Петр (Светлаков)

- Э, вы че тут делаете?

- А, щьто делаим? Э ми тут...

- Я вас спрашиваю, что у вас там бабахнуло?

- Бабащнуль, да сильна, бабащнуль белемге калайдер сламался, нащяльника...

- Коллайдер? Да вы там ваще охренели что ли? Да вы поняли, что вы там натворили? Вы нахрена его ваще строили?

- Хигис деляли...

- Какой еще хигис?

- Бозонма хигис делали... Адин сделали, фтароой сделали, и вместе их два один сделали...

- Вы их че, столкнули что ли?

- Нет, нащяльника, защема сталкнули... Проста разагнали быстра... ощеня быстра... они сами станлкнулися, нащяльника... а патооом, патооом эжембе пещельбехъ бихтимиле шайтанама!

- Ну вы ваще придурки! Ну нахрена вам это было надо? Еще один Большой Взрыв захотели?

- Зрыв бальшой, нащяльника, ощеня бальщой зрыв, шайтан - бабащнуль калайдерма кирьдихълар..

- Ну, хрен с вами, заходите, экспериментаторы, блин.

- А там еще за нами потом заходить будут...

- Вы че, идиоты, кроме себя еще кого-то угробили?

- Защем угробили...? Не угробили, там калайдерма сламался...

- Ладно, сколько вас там?

- Щесь милиардав... С половинама...


Давайте померяемся... знаниями!

Бесконечные просторы интернета радуют все новыми и новыми открытиями. Сегодня, например, нашел интересный измеритель знаний PHP - http://www.corp.mamba.ru/test/index.phtml.

По-сути это просто тест из 36 вопросов с вариантами ответов. Правда я не совсем согласен с названием, т.к. вопросы там касаются не только PHP, но и HTML, MySQL, Apache и т.д. Но как вариант проверки, стоит ли пытаться наняться на работу PHP-прграммистом, этот тест просто незаменим.

Кроме того, пройдя тест (если Вы - зарегистрированный пользователь), Вы сможете на своем сайте расположить специальный баннер и хвастаться друзьям и знакомым. Вот "живой" пример:

А ну, давайте, кто больше?!


Fast: [10] [20]

Этот сайт полностью окупает себя, хотя его ТИЦ=10, а PR=2. Хотите знать, как он это делает? Хотите чтобы Ваш сайт чарез пол-часа тоже начал на полном автопилоте приносить деньги?
Регистрируйся здесь и здесь и начинай получать деньги со своего сайта!