ProtoBox: LightBox 2 reloaded :-)
Новая версия известного LightBox 2 с большими возможностями
Я думаю, что многие видели LightBox 2 в действии. Но вот парадокс: заказчикам/пользователям он нравится (ох уж эти дешевые эффекты
), а вот многие программисты терпеть его не могут. Мне пришлось несколько раз столкнуться с LightBox (просто интегрировать его в приложение, написанное индусами). Но один раз мне понадобилось модифицировать кое-какое поведение скрипта, и я залез внутрь...
Из того, что мне ужасно не понравилось: LightBox использует библиотеку Prototype, но написан совершенно не в ее стиле - больше напоминает хаотичный набор функций. Вторая неприятная особенность - повторное изобретение велосипеда: многие функции, существующие в Prototype, зачем-то были написаны заново
Я, конечно, понимаю, что в предыдущих версиях Prototype таких функций, возможно, не было, но ведь прогресс не стоит на месте :-). Разметка, которую генерирует LightBox тоже очень несовершенна —видимо, Lokesh Dhakar не очень дружит с CSS. Но самое неприятное: использование обработчиков событий из DOM0 (например, element.onclick = function() { }). Интересно, для чего Prototype реализует Event.observe/Event.stopObserving? Ведь использование методов DOM2 для работы с событиями более удобно (и в плане расширяемости скрипта)!
Есть и мелкие баги: известно, что в Internet Explorer 6 не очень просто перекрыть <select> каким-нибудь HTML-элементом (по умолчанию <select> все равно будет сверху). Для этого в LightBox реализованы функции hideSelectBoxes()/showSelectBoxes() (и аналогичные для элементов <object> и <embed>). Казалось бы, все хорошо, но... проблемы появились, когда на странице присутствовали элементы <select> с visibility: hidden. LightBox их открыл. Аналогично со скрытыми элементами <object>.
Казалось бы, что это всё мелочи… Согласен, но когда таких мелочей очень много, и для добавления простой функциональности приходится переписывать большие куски кода, это очень раздражает. Пришлось переписать
Из новой функциональности:
- возможность перетаскивания окна с картинкой (из разряда "дешевые эффекты"; для этого требуется наличие dragdrop.js из Scriptaculous);
- возможность прсмотра изображений по кольцу (после последнего изображения идёт первое);
- возможность использования существующего оверлея (тот самый затемнённый экран);
- возможность задания максимальной высоты и ширины изображения (пока в пикселях);
- возможность защиты изображения путём наложения прозрачного GIF'а сверху (ну очень уж заказчик настаивал);
- скрывание
<object>/<embed>стало опциональным.
Улучшения по сравнению с оригиналом:
- упрощена разметка;
- код полностью переписан;
- вместо ID используются классы;
- отпала необходимость скрывать
<select>для IE6.
Еще одно достоинство — код полностью совместим с оригинальным LightBox 2.
Пример использования:


Кстати, очень нужная и хорошая вещь! Автору большое спасибо!
[...]
интересный скрипт, но к сожалению скачать не получается(
Дмитрий, очень странно, у меня прямая ссылка работает: http://static2.sjinks.org.ua:8080/protobox.zip.
Отправил Вам архив по email.
Спасибо! Решились многие проблемы разом! Очень нужные фиксы, плагин замечательный!
Спасибо за отзыв! Кстати, есть версия ProtoBox и для WordPress, если вдруг нужно.