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

Работа с поведениями Microsoft Internet Explorer

Оглавление
Работа с поведениями Microsoft Internet Explorer
Страница 2
Страница 3
Страница 4
Страница 5
Страница 6
Страница 1 из 6

Поведения Microsoft Internet Explorer, которые начали поддерживаться в версии 5.5 этой программы,— очень мощный инструмент создания динамических Web-страниц. К сожалению, он плохо описан в популярных книгах по Web-дизайну и Web-программированию, поэтому используется нечасто.

Народ замечает

А может, все дело в том, что поведения поддерживаются только Internet Explorer. Остальные Web-обозреватели их не поддерживают. Наверно, все это потому, что их разработчики не рассматривают свои творения как платформы для создания полноценных Web-решений корпоративного уровня, где поведения могут весьма пригодиться.

Народ предупреждает!

Напоминаем еще раз, что поведения поддерживаются ТОЛЬКО Internet Explorer версии 5.5 или более поздними.

Что такое поведения Microsoft Internet Explorer и как их создавать?

Проблема

Вот все говорят: "Поведения Internet Explorer... Поведения Internet Explorer..." А что они собой представляют и как их создавать? Наверно, очень сложно...

Решение

Поведения Microsoft Internet Explorer — это аналог каскадных таблиц стилей CSS, но не для правил оформления страниц, а для Web-сценариев. Если совсем просто, то поведение — это текстовый файл с расширением htc и содержащий код сценариев — обработчиков событий, которые могут быть привязаны к любому элементу страницы так же, как обычные стили CSS.

Создать поведение так же просто, как таблицу стилей. Сначала мы привязываем к нужному нам элементу страницы стилевой класс. Делается это хорошо нам знакомым атрибутом class:

<<Тег> CLASS= "<Имя стилевого класса>" [«Остальные атрибуты тега>]>

Следующий шаг— определение этого стилевого класса в таблице стилей, внешней или внутренней. Это тоже нам прекрасно знакомо.

Итак, стилевой класс создан, атрибуты стиля и их значения написаны. Теперь нам нужно указать, что мы также собираемся привязать к этому стилю еще и поведение. (Сам файл поведения мы пока не создали, но создадим потом.) Делается это с помощью вот такого атрибута стиля:

behavior:url(<Имя файла поведения>);

Как видим, атрибут этот имеет "говорящее" имя — behavior ("поведение"). Также заметим, что имя файла поведения указывается без кавычек.

Народ замечает

В принципе, городить огород с таблицей стилей совсем не обязательно. Атрибут стиля behavior можно поместить и во встроенный стиль, привязанный к тегу с помощью атрибута style этого тега:

<<Тег> STYLE= "behavior:url (<Имя файла поведения>) ;[Остальные атрибуты стиля]" [<Остальные атрибуты тега>]>

Третий, и последний, шаг — создать сам файл поведения. Как мы уже выяснили, он должен быть текстовым и иметь расширение htc. Формат его содержимого должен быть таким:

<PUBLIC:COMPONENTS>

<Определение обработчиков событий>

<SCRIPT TYPE="text/javascript"> <Код обработчиков событий>

</SCRIPT> </PUBLIC:COMPONENTS

Весь код, описывающий поведение, должен помещаться внутри парного тега <public:component>. Код JavaScript обработчиков событий также должен быть заключен в парный тег <script>.

Что касается определений обработчиков событий, то они должны иметь такой формат:

<PUBLIC:ATTACH ЕVЕNТ="<Имя события>" [FOR="<Элемент страницы>"]ONEVENT="<Вызов функции-обработчика события>"/>

Значение обязательного атрибута event одинарного тега <PUBLIC:аттасн> должно содержать имя события в виде строки, набранной маленькими буквами. Значение другого обязательного атрибута— onevent— должно содержать вызов функции-обработчика этого события, объявленной ниже, в теге <script>. Здесь все понятно.

Что касается необязательного атрибута for, to он задает элемент страницы или объект Web-обозревателя, событие которого должно обрабатываться. Всего он может принимать три значения:

   "element" — элемент страницы, к которому было привязано поведение. Это значение по умолчанию, применяемое, если атрибут for не указан;

   "document"—тело Web-страницы;

"window" — окно Web-обозревателя.

И еще один важный момент. Мы привыкли, что в языке HTML одинарные теги не содержат закрывающей пары. Но поведения — другое дело, и даже одинарный тег (например, <public:attach>) должен содержать закрывающий символ / перед символом >. Вот так:

<PUBLIC:ATTACH <АтрибутЫ> />

Впрочем, пробел перед этим символом необязателен.

Пример

Давайте создадим поведение, запрещающее реакцию Web-обозревателя при щелчке по элементам Web-страницы. Впоследствии оно может нам пригодиться.

Итак, вот содержимое файла jspsIEBehaviorSimple.html с самой Web-страницей:

<HTML> <HEAD>

<STYLE TYPE="text/CSS">

.nodefault behavior:url(jspsIEBehaviorSimple.htc); } </STYLE> </HEAD> <BODY>

<P><A HREF="pagel.html" CLASS="nodefault">Страница 1</A></P> <P><A HREF="page2.html" CLASS="nodefault">Страница 2</A></P> <P><A HREF="page3 .html">Страница 3</Ах></Р> </BODY> </HTML>

А вот содержимое файла jspsIEBehaviorSimple.htc с кодом поведения:

<PUBLIC:COMPONENTS

<PUBLIC:ATTACH EVENT="onclick" ONEVENT="elementOnClick();"/> <SCRIPT TYPE="text/javascript"> function elementOnClick() {

event.returnValue = false; } </SCRIPT> </PUBLIC:COMPONENT>

Если открыть файл jspsIEBehaviorSimple.html в Web-обозревателе, то при щелчках по гиперссылкам, ведущим на страницы 1 и 2, ничего происходить не будет (т. е. наше поведение работает). А гиперссылка, указывающая на страницу 3, работать будет, поскольку мы не указали в ее теге стилевой класс nodefault, к которому привязано поведение.

Как из поведения получить доступ

к элементу страницы, к которому оно привязано,

и телу страницы?

Проблема

Поведения, конечно, хорошая штука... Но мне нужно из него получить доступ к элементу страницы, к которому оно привязано, и к телу самой страницы. Это возможно?

Решение

Разумеется! Для этой цели Internet Explorer предоставляет программисту два объекта:

element — элемент страницы, к которому привязано поведение;

document — тело самой этой страницы.

Эти объекты доступны из любого сценария, являющегося частью кода поведения.

Пример

Давайте немного исправим содержимое файла jspsIEBehaviorSimple.htc, приведенное ранее (добавленный код выделен полужирным шрифтом):

<PUBLIC:COMPONENT>

<PUBLIC:ATTACH EVENT="onclick" ONEVENT="elementOnClick();"/> <SCRIPT TYPE="text/javascript"> function elementOnClick() { window.alert(element.innerText + "недоступна"); event.returnValue = false; } </SCRIPT> </PUBLIC:COMPONENT>

Теперь при щелчке на любой гиперссылке, к которой привязано это поведение, на экран будет выводиться окно-предупреждение, сообщающее, что данная страница недоступна.

Народ замечает

Вот, кстати, одно из преимуществ поведений Internet Explorer. Чтобы исправить какой-либо из обработчиков событий, нам достаточно внести правки в один-единственный файл — файл поведения.

Как из поведения отследить момент окончания загрузки элемента страницы, к которому привязано поведение, и тела страницы?

Проблема

Хорошо, вы меня убедили! Я таки написал свое поведение, но столкнулся с проблемой. Мне нужно отследить момент, когда Web-обозреватель заканчивает загрузку элемента страницы, к которому привязано поведение, и тела самой страницы. Как это можно сделать?

Решение

Что ж, разработчики из Microsoft и это продумали. Internet Explorer предоставляет аж два события, доступных из кода поведения и сообщающих об окончании загрузки: элемента страницы, к которому привязано поведение, — oncontentReady; тела страницы — onDocumentReady.

Обработать эти события проще простого. В начале кода поведения помещаем уже знакомый нам одинарный тег <ривыс: аттасн> такого вида:

<PUBLIC:ATTACH EVENT="oncontentready|ondocumentready" [FOR="<Элемент страницы>"]0NEVENT="<Bbf3OB функции-обработчика события>"/>

И пишем объявление самой функции-обработчика.

Народ замечает

Вообще, поведение может обрабатывать еще два события, о которых автор не счел нужным упомянуть. Это событие onContentSave, наступающее при сохранении Web-страницы на жестком диске и копировании ее в буфер обмена, и событие onDetach, наступающее, когда поведение отключается от элемента страницы (это происходит при выгрузке страницы). Иногда они бывают полезными.

Пример

Давайте сделаем так, чтобы гиперссылки, к которым было привязано наше поведение, сразу же после загрузки зачеркивались. Для этого перепишем файл поведения jspsIEBehaviorSimple.htc так:

<PUBLIC:COMPONENT>

<PUBLIC:ATTACH EVENT="onclick" ONEVENT="elementOnClick();"/> <PUBLIC:ATTACH EVENT="oncontentready" ONEVENT="elementOnReady () ,-"/> <SCRIPT TYPE="text/j avascript"> function elementOnClickO {

event.returnValue = false; }

function elementOnReady() {

element.style.textDecoration = "line-through"; } </SCRIPT> </PUBLIC:COMPONENT>

Свойство style экземпляра объекта, соответствующего элементу страницы, предоставляет доступ к одноименному объекту — стилю CSS. Свойство textDecoration, как и атрибут стиля text-decoration, позволяет задать оформление текста (подчеркивание, надчеркивание или зачеркивание). Значение "line-through" этого атрибута как раз зачеркивает текст.


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


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

0.1521
Hosted by uCoz