Кратко о js-wrapper
Для тех, интересуется js-wrapper впервые, в нескольких словах могу сказать, что эта программа представляет собой набор классов (под классом здесь подразумевается пара: функция-конструктор + объект-прототип) для создания оберток для различных стандартных JavaScript-объектов.
В настоящее время в js-wrapper входят три основные обертки:
- winWrapper - обертка окна браузера. Включает в себя элементы window и document.
- elmWrapper - обертка для любого html-элемента. Включает в себя сам "обернутый элемент" и ссылку на обертку окна этого элемента.
- evtWrapper - обертка для объекта "event". Включает в себя объект "event" и ссылку на обертку элемента, на котором произошло событие.
И одна дополнительная обертка:
- loadWrapper - обертка для загрузчика (специальная программа позволяющая различными способами обращаться к серверу из JavaScript).
Каждая обертка имеет методы, позволяющие выполнять ряд манипуляций с обернутыми объектами. Часть из этих манипуляций просто упрощает стандартные процедуры, которые вам приходится часто делать. Однако основная задача обертки - унифицировать те свойства и методы, которые различаются в разных браузерах! Таким образом, обращаясь к определенному методу обертки вам не нужно беспокоиться, что этот метод по-разному вызывается в различных браузерах. Обертка выполнит для вас эту процедуру с учетом версии браузера.
Ни в коем случае не следует думать, что обертка ограничивает вам прямой доступ к элементу. Те процедуры, которые в настоящий момент являются более-менее кроссбраузерными (например, работа с DOM) могут и должны выполняться только при непосредственном обращении к обернутому элементу, а не к обертке! Но даже получив какой-либо объект, например через DOM, я рекомендовал бы вам его сразу "обернуть" и напрямую обращаться только к тем свойствам и методам объекта, которых нет у обертки. Как это сделать будет позже описано в документации к js-wrapper.
Все события в обертке желательно обрабатывать через подписку. Хотя я и предусмотрел специальную функцию, которую можно использовать как функцию обратного вызова в html-коде привычным для многих способом, но пользоваться ей я не рекомендую. Работа с событиями через подписку дает больше универсальности и делает вызов нескольких различных методов для обработки события - независимыми. Например, на событии "onload" у вас может "висеть" несколько подписанных процедур, и каждая из них будет вызвана независимо от других. Каждый обработчик события всегда будет иметь два параметра: первый - обертка для объекта "event", а второй - дополнительный пользовательский объект, свойства которого устанавливаются в момент подписки.
Это уже вторая версия js-wrapper и по интерфейсу она сильно отличается от первой, что делает их несовместимыми. Главное отличие этих версий в том, что раньше при "оборачивании объекта" ему добавлялись новые свойства и методы, что вызывало потом ряд определенных проблем. Во второй версии я разделил обертку и сам элемент, что дало возможность сохранить целостность элемента и позволило независимо манипулировать свойствами и методами обертки и элемента. Это, в общем-то, и стало основной причиной несовместимости. Тем программистам, которые уже начали пользоваться первой версией, я настоятельно рекомендую перевести свои программы на вторую версию. Переделки при этом у вас будут незначительные. Во второй же версии многое доработано и исправлены некоторые ошибки, имевшие место в первой версии.