Работа с поведениями Microsoft Internet Explorer
Оглавление
Работа с поведениями Microsoft Internet Explorer
Страница 2
Страница 3
Страница 4
Страница 5
Страница 6
Страница 5 из 6
Как создать новый метод поведения? Проблема
Что ж, поведения Internet Explorer действительно на высоте. Даже свойства
позволяют создавать. А как насчет методов?
Решение
Для добавления нового метода нам, прежде всего, нужно будет объявить функцию,
которая, собственно, и станет этим методом. Чтобы сделать ее "видимой снаружи",
используется одинарный тег <public:method>. Вот его формат:
<PUBLIC:METHOD NАМЕ="<Имя метода>" [INTERNALNAME="<Внутреннее имя
метода>"]/>
Единственный обязательный атрибут name задает имя метода, под которым к нему
смогут получить доступ сценарии, созданные в Web-странице. Разумеется, имя
метода должно совпадать с именем объявленной нами функции — реализации этого
метода.
Если же имя написанной нами функции все же не совпадает с выбранным нами
именем метода, мы можем воспользоваться необязательным атрибутом internalname. В
качестве значения этого атрибута указывается имя функции — реализации метода —
без скобок.
Пример
Давайте добавим нашему поведению два метода — enable и disable. Первый метод
будет включать гиперссылку, второй — отключать.
Вот вновь исправленный файл поведения jspsIEBehaviorSimple.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"/> <SCRIPT
TYPE="text/javascript"> var isEnabled = true;
function elementOnClick() {
event.returnValue = isEnabled;
}
function getlsEnabled() {
return isEnabled.toString(); }
function putlsEnabled(propValue) {
switch (typeof(propValue)) {
case "string":
isEnabled = (propValue == "true"); break; case "number":
isEnabled = (propValue > 0) ; break; case "boolean":
isEnabled = propValue; break; case "object":
isEnabled = (propValue != null); break; default:
isEnabled = false; } prpEnabled.fireChange() ; if (isEnabled)
element.style.textDecoration = "none" else
element.style.textDecoration = "line-through"; }
function elementEnable() {
putlsEnabled("true"); }
function elementDisable() {
putlsEnabled (" false") ; } </SCRIPT> </PUBLIC:COMPONENT>
« Пред. - След. »