Работа с поведениями Microsoft Internet Explorer
Оглавление
Работа с поведениями Microsoft Internet Explorer
Страница 2
Страница 3
Страница 4
Страница 5
Страница 6
Страница 6 из 6
И не забудем исправить Web-страницу jspsIEBehaviorSimple.html, которая
поможет нам его проверить:
<HTML> <HEAD>
<STYLE TYPE="text/css">
A { behavior:url{jspsIEBehaviorSimple.htc); } </STYLE>
<SCRIPT TYPE="text/javascript"> function toggleLinkEnabled() { var
hrflObject = document.all["hrfl"]; if (hrflObject.enabled == "true")
hrflObject.disable() else
hrflObject.enable(); } </SCRIPT> </HEAD> <BODY>
<P><A HREF="pagel.html" ID="nrf1">Страница 1</А></Р>
<P><A HREF="page2.html">Страница 2</A></P>
<P><A HREF="#" ONCLICK="toggleLinkEnabled() ;">Страница
3</А></Р> </BODY> </HTML>
Как создать новое событие поведения?
Проблема
Ну и не помешала бы возможность создавать в поведениях свои события. Это
можно сделать?
Решение
И это можно сделать! Правда, и времени это займет больше, чем добавление
свойств и методов.
Сначала нам будет нужно объявить само событие. Делается это с помощью
одинарного тега <public: event>, формат которого очень прост:
<PUBLIC:EVENT NAME="<Имя события>"[ID=<Имя элемента поведения,
описывающего событие>]/>
Обязательный атрибут name задает имя события, под которым оно будет доступно
в коде Web-страницы. Другой атрибут, который, хоть и не является обязательным, но практически всегда необходим, — id, задающий уникальное имя
тега <public : event>. Зачем он здесь нужен, мы узнаем чуть позже.
Следующий наш шаг — инициирование наступления этого события. Прежде всего,
находим в коде поведения место, где созданное нами событие должно быть
инициировано, и освобождаем пространство, по крайней мере, для двух выражений.
Эти выражения будут, соответственно, создавать объект event, несущий информацию
о событии, и инициировать это событие.
Объект event создается с помощью функции createEventobject. Эта функция не
принимает никаких параметров, а возвращает созданный объект event, который будет
нужно сразу же присвоить какой-либо переменной.
Мы можем установить любые значения для любых свойств этого объекта. Более
того, мы даже можем создать свои свойства, если нам потребуется передавать с
событием какую-то дополнительную информацию.
Теперь, когда объект event готов, мы можем инициировать наступление события.
Для этого предназначен метод fire экземпляра объекта, представляющего собой
описывающий событие тег <public:event>. Вот формат его вызова:
<Имя элемента поведения, описывающего событие>.fire(Экземпляр объекта
event);
Думается, объяснять тут особо нечего — все и так понятно.
Пример 1
Давайте добавим нашему многофункциональному и многострадальному поведению
событие onReject, наступающее, когда пользователь щелкает мышью на отключенной
гиперссылке. Для этого мы опять перепишем файл jspsEEBehaviorSimple.htc. Вот
фрагмент переписанного файла:
<PUBLIC:COMPONENT>
<PUBLIC:ATTACH EVENT="onclick" ONEVENT="elementOnClick();"/>
<PUBLIC:PROPERTY NAME="enabled" GET="getIsEnabled"
PUT="putIsEnabled"ID="prpEnabled"/>
<PUBLIC:METHOD NAME="enable" INTERNALNAME="elementEnable"/>
<PUBLIC:METHOD NAME="disable" INTERNALNAME="elementDisable"/>
<PUBLIC:EVENT NAME="onReject" ID="evnOnReject"/> <SCRIPT
TYPE="text/javascript"> var isEnabled = true;
function elementOnClick() {
event.returnValue = isEnabled;
if (lisEnabled) { var evn = createEventObject() ; evnOnReject.fire(evn); }
}
// Остальной код поведения был опущен для экономии места </SCRIPT>
</PUBLIC:COMPONENT>
И, в какой уже раз, перепишем страницу jspsffiBehaviorSimple.html:
<HTML> <HEAD>
<STYLE TYPE="text/CSS">
A { behavior:url(jspsIEBehaviorSimple.htc); } </STYLE>
<SCRIPT TYPE="text/javascript"> function hrfOriReject() {
window.alert("Эта гиперссылка недоступна"); } </SCRIPT> </HEAD>
<BODY>
<P><A HREF="pagel.html" ENABLED="false"ONREJECT="hrfOnReject()
;">Страница 1</А></Р>
<P><A HREF="page2.html" ONREJECT="hrfOnReject();">Страница
2</А></Р> <P><A HREF="page3.html"
ONREJECT="hrfOnReject();">Страница 3</А></Р> </BODY>
</HTML>
Пример 2
Дабы еще усовершенствовать наше поведение, давайте передавать в значении
одного из свойств объекта event интернет-адрес отключенной гиперссылки. Назовем
это свойство href.
Чтобы реализовать эту возможность в нашем поведении, нам будет достаточно
переписать в файле jspsIEBehaviorSimple.htc только функцию elementonciick. Вот
так она должна теперь выглядеть:
function elementOnClick() {
event.returnValue = isEnabled;
if (!isEnabled) {
var evn = createEventObject();
evn.href = element.href; evnOnReject.fire(evn); } }
...'''■;
Остальной код поведения остался без изменений.
И еще мы обязательно внесем изменения в функцию-обработчик события
hrfOnReject страницы jspsIEBehaviorSimple.html. Исправленная функция будет
выглядеть так:
function hrfOnReject() {
window.alert("Гиперссылка " + event.href + " недоступна"); }
Остальной код страницы остался без изменений.
Народ советует
Что касается поведений, то автор о многом умолчал. Если же вы хотите знать о
них все, посетите раздел сайта MSDN (Microsoft Developer's Network, сеть
разработчиков Microsoft), посвященный поведениям Internet Explorer. Найти этот
раздел можно по адресу http://msdn.microsoft.com/workshop/author/behaviors
/behaviors_node_entry.asp.
Что дальше?
Выяснив все о сценариях, событиях и их обработке, перейдем к решению
конкретных задач. И начнем мы с получения сведений о клиентской операционной
системе и Web-обозревателя, которым пользуется посетитель нашего будущего сайта.
Такая информация очень часто бывает нужна, например, чтобы подогнать страницу
под конкретное разрешение экрана или выдать посетителю страницу на определенном
языке. Итак, приступим!
« Пред. - След.