Главная » Статьи » Уроки JavaScript » Заглянем внутрь Java Script (часть 2)
В этой статье мы постараемся разобраться, как написать скрипт, для работы со слоями, одинаково подходящий, как для IE, так и для NN.
Слоями могут быть блоки с графикой, текстом и т.д. Просто каждый блок должен быть заключен в тег <div> и тегу надо дать уникальный ID.
Для нетскейпа и эксплорера слои обозначаются по разному, конечно можно написать отдельно функции для NN и отдельно для IE, с проверкой версии браузера. Но представим, что нам надо написать 4 функции, а 8, а теперь все это умножить на два - впечатляет!?
Мы напишем скрипт, который будет работать в обоих браузерах, но будет в два раза короче.
Предположим, мы хотим спрятать слой. Посмотрим как должна выглядеть строка для NN: document.layers.LayerName.visibility = 'hidden';
А вот строка для IE: document.all.LayerName.style.visibility = 'hidden';
Ну как увидели разницу? Для NN мы используем обозначение слоев - layers, для IE - all, также для IE, для обозначения стиля используется - style, а в NN мы ничего не ставим Для оптимальной работы кода мы создадим две переменные и поставим проверку на имя браузера: if (navigator.appName == "Netscape") { var layerRef=".layers."; var styleRef=""; } else { var layerRef=".all."; var styleRef=".style"; }
Теперь для NN и IE у нас есть переменные содержащие нужные обозначения и мы воспользуемся командой eval, которая как бы "склеивает" строки. Вот как будет это выглядеть: eval("document" + layerRef +"def_sloy" + styleRef + ".visibility = 'hidden'"); Теперь пишем нужное количество строк, показывающих 'visible' и убирающих 'hidden' слои. Объединяем их в функции относительно каждого слоя. Функции должны срабатывать на ссылках по действию onclick="ИМЯ_ФУНКЦИИ", href=#.
Итак, теперь наш скрипт для работы со слоями будет занимать вдвое меньше места.
А вот пример работы такого скрипта.
Автор: Сухов
E-mail: andersu@narod.ru
|