|    | 
СИ-БИ техника | КВ техника | УКВ техника | Радиоизмерения | Защита от TVI | Источники питания | Софт | Расчеты | Справочники
Главная arrow Программирование arrow Java arrow Работа с поведениями Microsoft Internet Explorer  

Работа с поведениями 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-обозревателя, которым пользуется посетитель нашего будущего сайта. Такая информация очень часто бывает нужна, например, чтобы подогнать страницу под конкретное разрешение экрана или выдать посетителю страницу на определенном языке. Итак, приступим!


« Пред. - След.


RLBN.ru - Электроника и компьютеры

0.1481
Hosted by uCoz