Автор статьи: Головин Андрей
В этом «опыте» рассмотрим как реализовать позиционирование объектов как для Internet Explorer, так и Netscape Navigtor. Для того, чтобы было лучше понятно, рассмотрим различие в свойствах позиционирования объектов в этих браузерах.
Горизонтальная координата объекта в пикселях:
<b>n</b> document.layers[«obj_name»].left
<b>e</b> document.all[«obj_name»].pixelLeft
Вертикальная координата объекта в пикселях:
<b>n</b> document.layers[«obj_name»].top
<b>e</b> document.all[«obj_name»].pixelTop
Ширина объекта в пикселях:
<b>n</b> document.layers[«obj_name»].clip.width
<b>e</b> document.all[«obj_name»].pixelWidth
Высота объекта в пикселях:
<b>n</b> document.layers[«obj_name»].clip.height
<b>e</b> document.all[«obj_name»].pixelHeight
Средствами JavaScript, с применением уже рассмотренной библиотеки >detect.js, процедуры установки и чтения этих свойств можно реализовать следующим образом:
function getX(el) {
if (NN) {
return(document.layers[el].left);
}
else {
return(document.all[el].style.pixelLeft);
}
}
Я надеюсь, что общая идея ясна? Для желающих разобраться в подробностях, предлагаю скачать последнюю версию библиотеки detect.js, которая, на сегодняшний день, содержит много новых функций, которые кроме определения типа браузера позволяют манипулировать различными свойствами позиционирования объектов и параметрами окна браузера (краткое описание внутри файла).
Необходимо заметить, что эти методы в Netscape Navigator можно использовать только для позиционированных объектов, которые входят в коллекцию layers. Это <DIV> и <LAYER>.
На основе этих методов я переписал библиотеку floaters.js, чтобы ее можно было использовать в обоих браузерах. Для ее использования указываем обе библиотеки в заголовке страницы:
<SCRIPT
TYPE=»text/javascript»
LANGUAGE=»JavaScript»
SRC=»detect.js»>
</SCRIPT>
<SCRIPT
TYPE=»text/javascript»
LANGUAGE=»JavaScript»
SRC=»d-floaters.js»>
</SCRIPT>
В тэге <BODY> задаем обработчик события onLoad, содержащий код следующий код:
function init() {
initDetect();
startFloaters();
}
Создаем процедуру запуска движения startFloaters()
function startFloaters() {
fl1 = new floater(«fl1″,1,2,true);
flStart(fl1);
}
var fl1;
Сам движущийся объект теперь необходимо задавать по-другому. В данном случае — так:
<DIV
ID=»fl1″
NAME=»fl1″
STYLE=»position: absolute; top: 0; left: 0; z-index: 100″>
<IMG
SRC=»images/0032_01.gif»
WIDTH=50 HEIGHT=21
BORDER=0
ALT=»floater»>
</DIV>