| В этой главе приводится формальное описание вспомогательных функций, которые можно найти в Base. Эти функции были разработаны с целью упростить решение проблем, типичных для языка JavaScript, связанных с несовместимостью броузеров, и поэтому они отличаются высокой переносимостью и были сильно оптимизированы. Независимо от того, будете ли вы использовать чтонибудь еще из инструментального набора, конструкции, представленные в этой главе, заслуживают пристального внимания, потому что они обеспечивают такие удобства, без которых сложно будет обойтись, после того как вы попробуете использовать их. Среди тем, рассматриваемых в этой главе, – манипулирование массивами, клонирование узлов, добавление и удаление классов, а также вычисление размеров отступов и вмещаю
щих прямоугольников для узлов DOM. |
Статьи раздела 'Утилиты броузера': |
| Аргументы «функции в виде строк» Библиотека Base предоставляет возможность передавать функциям forEach, map, filter, every и some сокращенные аргументы «функции в виде строк». Вообще такой подход выглядит проще, чем создание функцийоберток, и особенно удобен в д... |
| Блочная модель Блочная модель CSS – это достаточно простая тема, но изза наличия множества несогласованностей в ее реализациях, существующих в Сети, работа с ней быстро превращается в кошмар. Этот короткий раздел лишь немного затрагивает вопрос... |
| Грубое определение типа Концепция грубого определения типа, присущая языкам программирования с динамической типизацией, таким как Python и JavaScript, лежит в основе большинства только что представленных функций. Суть грубого определения типа можно выраз... |
| Добавление узлов Встроенные методы манипулирования содержимым дерева DOM, такие как appendChild, insertBefore и т. д., вполне справляются со своей работой, но иногда гораздо удобнее иметь более универсальное средство размещения узлов. Именно таким... |
| Зачем управлять беспорядком Для любых проектов, кроме самых маленьких, преимущества описываемого подхода не вызывают сомнений. Простота в обслуживании и легкость расширения или встраивания программного кода в разные страницы являются ключевыми аспектами, кот... |
| Изменение стилей узлов Функция dojo.style из библиотеки Base обеспечивает полную возможность получения или изменения значений отдельных атрибутов стиля для конкретного узла. Чтобы получить значение определенного атрибута стиля, достаточно просто передат... |
| Манипулирование атрибутами Аналогично приемам работы со стилями узлов, обсуждавшимся в предыдущем разделе, библиотека Base предоставляет функции, позволяющие получать, изменять, удалять и проверять существование атрибутов.
Функция dojo.attr работает точн... |
| Манипулирование контекстом объекта Глобальный объект window обеспечивает в вебприложениях самый внешний уровень контекста, но иногда бывает необходимо изменить контекст по умолчанию на какойто другой. Например, у вас может возникнуть потребность сохранять состоян... |
| Обработка массивов Массивы являются одной из наиболее фундаментальных структур данных в любом императивном языке программирования, включая и JavaScript. Однако, к сожалению, стандартные функции для работы с массивами поддерживаются не всеми господст... |
| Обработчики событий и организация взаимодействий по подписке В состав библиотеки Base входят чрезвычайно удобные и гибкие утилиты для организации взаимодействий между объектами JavaScript, узлами DOM и любыми их комбинациями. В этой главе будут представлены все эти конструкции, а также дан... |
| Обход элементов Функция forEach передает каждый элемент массива функции, принимающей до трех параметров и не возвращающей никакого значения. Первый параметр – текущий элемент массива, обход которого выполняется, второй параметр (необязательный) –... |
| Определение родительского элемента В состав библиотеки Base входят несколько удобных функций, которые дополняют перечень общих функций для работы с DOM. Первая из этих функций, isDescendant, имеет название, говорящее само за себя. Функция принимает два аргумента (з... |
| Определение типа В языках программирования с динамической типизаций, таких как JavaScript, очень часто бывает необходимо (и даже желательно) определить тип переменной, прежде чем выполнять какиелибо операции над ней. На первый взгляд определение ... |
| Поиск местоположения элементов Две самые распространенные операции при работе с массивами включают в себя определение индекса элемента, причем обе они, по сути, проверяют наличие элемента в массиве. Библиотека Base упрощает поиск двумя функциями с говорящими им... |
| Поиск узлов DOM В предыдущей главе была представлена функция dojo.byId – специализированный механизм поиска узлов DOM более переносимым и предсказуемым способом, чем метод document.getElementById. Функция dojo.byId является самой часто используем... |
| Преобразование элементов Функции map и filter имеют точно такую же сигнатуру, что и forEach, но они принципиально отличаются от последней тем, что, применяя некоторую логику к каждому элементу массива, они возвращают другой массив, оставляя оригинальный м... |
| Пример с числами Фибоначчи при использовании локальной версии инструментария Для сравнения в примере 2.5 приводится тот же самый пример, но на этот раз используется локальная версия инструментария Dojo, а модуль dtdg находится в корневом каталоге инструментария рядом с каталогом dojo, содержащим библиотек... |
| Пример создания модуля для применения в составе версии XDomain Рассмотрим небольшой конкретный пример использования инструкций dojo.require и dojo.provide. Для начала рассмотрим простой модуль, реализующий такую тривиальную функцию, как функцию вычисления членов последовательности Фибоначчи. ... |
| Проверка элементов на соответствие условию Очень часто бывает необходимо определить, соответствуют ли все элементы массива некоторому условию или существуют ли в массиве элементы, соответствующие некоторому условию. Для выполнения такого рода проверок библиотека Base предо... |
| Селективность Необходимость предотвратить возможность выделения текста на странице с помощью мыши возникает не так уж редко, и это иногда действительно способствует увеличению простоты и удобства использования. Фактически в каждом броузере имее... |