Работа с поведениями Microsoft Internet Explorer
Оглавление
Работа с поведениями Microsoft Internet Explorer
Страница 2
Страница 3
Страница 4
Страница 5
Страница 6
Страница 2 из 6
И в этом случае нам не придется переделывать страницу
jspsJEBehaviorSim-ple.html. Вот она, мощь поведений!
Как создать новое свойство поведения?
Проблема
Конечно, вынесение обработки событий в поведения здорово помогает в работе. А
можно ли аналогичным образом добавить элементам страницы новые свойства, причем
так, чтобы их значения можно было бы задавать прямо в теге, как его атрибут?
Решение
Конечно можно! Для этого используется одинарный тег <public:property>.
Вот его формат:
<PUBLIC:PROPERTY NАМЕ="<Имя свойства>" . [VALUE="<Значение по
умолчанию>"} [INTERNALNAME= "<Имя переменной, соответствующей
свойству>"] [GET="<Вызов get-функции>"] [PUT="<Вызов
put-функции>п] [ID=<Имя элемента поведения, описывающего
свойство>]/>
Единственный обязательный атрибут тега <public:property>— name, в
котором задается имя свойства. Встретив такой тег, Web-обозреватель сам
сформирует в памяти переменную, имя которой совпадает с именем свойства, и
поместит в него заданное в атрибуте тега или свойстве экземпляра объекта,
соответствующего элементу страницы. Нам самим объявлять эту переменную не
нужно.
Народ предупреждает!
Если значение свойства задано с помощью соответствующего атрибута в теге
элемента страницы, оно передается в свойство в строковом виде.
Необязательный атрибут value позволяет задать значение свойства по умолчанию.
Это значение свойство примет в том случае, если оно не было явно задано в
атрибуте тега.
Часто бывает так, что выбранное имя свойства в коде JavaScript использовать
невозможно. Это может случиться, если его имя совпадает с какой-либо переменной,
функцией или объектом, уже объявленным в коде поведения. Специально для такого
случая у нас имеется возможность сохранить значение свойства в другой
переменной. Вот как это делается...
1. Объявляем глобальную переменную, в которой будет храниться значение
свойства, и присваиваем ей значение свойства по умолчанию в строковом виде.
Атрибут value тега <public:property> в этом случае можно не указывать.
2. Указываем имя объявленной переменной в значении необязательного атрибута
INTERNALNAME тега <PUBLIC: PROPERTY>.
Теперь для доступа к значению свойства мы можем использовать эту
переменную.
Очень часто бывает так, что значение свойства не хранится в памяти постоянно,
а получается в результате каких-либо вычислений. В таком случае мы поступим
следующим образом.
1. Объявим функцию, которая будет выполнять соответствующие вычисления
и возвращать их результат. Параметров эта функция принимать не должна.
2. Поместим имя (только имя, а не вызов!) этой функции в значение
необязательного атрибута get тега <PUBLIC: property>.
Кстати, функции, занимающиеся вычислениями значения какого-либо свойства,
часто называют get-функциями, от английского "get" — "получить".
Также часто приходится при занесении нового значения в свойство выполнять
какие-либо сторонние действия (например, обновлять содержимое элемента
страницы). В таком случае алгоритм наших действий приведен ниже.
1. Объявляем переменную, в которой будет храниться значение свойства, —
это обязательно! Указывать ее имя в атрибуте internalname тега
<public:property> в этом случае не нужно.
2. Объявляем функцию, принимающую единственный параметр— новое значение
свойства — и не возвращающую результата.
3. Даем имя тегу <PUBLIC: property>, описывающему свойство. Это
делается с помощью хорошо знакомого нам необязательного атрибута id.
4. В теле функции пишем код, который заносит значения полученного
параметра в объявленную ранее переменную и выполняет нужные сторонние
действия.
5. Там же, в теле функции, записываем вызов метода fireChange
экземпляра объекта, представляющего тег <public : property>, описывающий
данное свойство. Получить доступ к этому экземпляру объекта можно через имя,
которое мы дали с помощью атрибута id. Метод firechange не принимает параметров,
не возвращает результат и служит для информирования Web-обозревателя о том, что
значение свойства элемента страницы изменилось.
6. Записываем имя (опять же, только имя, а не вызов!) этой функции в
значение необязательного атрибута put тега <public:property>.
7. Если хотим, чтобы свойство было доступно еще и для чтения, а не
только для записи, создаем get-функцию. Как это сделать, было описано ранее.
« Пред. - След. »