Урок 13. Управление шрифтами в CSS
New Page 1
Web-программирование: «Java
Script: Библиотека визуальных компонентов.
Методы базового класса. Продолжение».
Сегодня
мы продолжим разбор методов класса CXBrBaseInterfaceClass.
И так, _set_name
- метод установки имени объекта, он еще и
проверяет его на уникальность во всем
дереве вложенности объектов (объекты можно
поместить в контейнер, но до него мы еще
дойдем). Вот реализация этого метода:
function
CXBrBaseInterfaceClass_set_name(name) {
if(this._owner!=null) {
if(this._owner._global_get_by_name(name,this,true)!=null) {
this._error("Имя "+name+" не уникально");
return
false;
}
} else {
if(this._is_child_or_self("CXBrObjectsContainer")) {
if(this._global_get_by_name(name,this,true)!=null) {
this._error("Имя "+name+" не уникально");
return
false;
}
}
}
this._name=name;
return true;
} |
Как
происходит проверка на уникальность? Если
объект вложен в контейнер (у него есть
владелец, _owner не равен null), то производим
поиск внутри этого контейнера, иначе
проверяем, а не является ли наш объект сам
контейнером? Если да, то поищем еще имя еще и
у вложеных в него самого объектов. Если не
нашли - имя уникально и его можно присвоить.
Иначе выдаем сообщение об ошибке.
Далее
вам понадобятся исходники библиотеки. Если
их у вас нет, скачайте их здесь.
Для
того, что бы убедиться, что этот метод
работает, используем вот такой тестовый
пример:
<html>
<head>
<title></title>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="XBrBase.js">
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="XBrGlobalVars.js">
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript" SRC="XBrGlobalProc.js">
</SCRIPT>
</head>
<body>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
var ob=new CXBrBaseInterfaceClass()
var ob1=new CXBrBaseInterfaceClass()
var cont = new CXBrObjectsContainer()
cont._add(ob)
cont._add(ob1)
document.write("ob._set_name('Proba1')<br>")
ob._set_name('Proba1');
document.write("ob1._set_name('Proba1')<br>")
ob1._set_name('Proba1');
document.write("ob1._set_name('Proba2')<br>")
ob1._set_name('Proba2');
var cont1 = new
CXBrObjectsContainer()
cont1._add(cont)
alert("Сейчас выполним cont1._set_name('Proba1')")
document.write("cont1._set_name('Proba1')<br>")
cont1._set_name('Proba1')
var ob2=new CXBrBaseInterfaceClass()
cont1._add(ob2)
document.write("ob2._set_name('Proba1')<br>")
ob2._set_name('Proba1');
document.write("ob2._set_name('Proba2')<br>")
ob2._set_name('Proba3');
</SCRIPT>
</body>
</html> |
Ну, и
наконец два последних, самых легких метода
класса CXBrBaseInterfaceClass, это _error и _get_name:
function
CXBrBaseInterfaceClass_get_name() {return this._name}
function
CXBrBaseInterfaceClass_error(errmsg) {
alert(errmsg);
} |
Все,
теперь можно переходить к классу
контейнеру, но это мы сделаем в будущих
выпусках.
|