JavaScript для мага

Перемещение слоев


Свойства left и top определяют задают положение данного слоя. Вы можете менять его, записывая в эти атрибуты новые значения. Например, в следующей строке задается горизонтальное положение слоя в 200 пикселов:

document.layers["myLayer2"].left= 200;

Перейдем теперь к программе перемещения слоев - она создает нечто вроде линейки  прокрутки внутри окна браузера.

(online-версия руководства позволит Вам проверить этот скрипт немедленно)

Сам скрипт выглядит следующим образом:

<html>

<head>

<script language="JavaScript">

<!-- hide

function move() {

  if (pos < 0) direction= true;

  if (pos > 200) direction= false;

  if (direction) pos++



    else pos--;

  document.layers["myLayer2"].left= pos;

}

// -->

</script>

</head>

<body onLoad="setInterval('move()', 20)">

<ilayer name=myLayer2 left=0>

<font size=+1 color="#0000ff"><i>This text is inside a layer</i></font>

</ilayer>

</body>

</html>

Мы создаем слой с именем myLayer2. Можно видеть, что в тэге <body> мы пользуемся процедурой onLoad. Нам необходимо начать прокручивание слоя, как только страница будет загружена. В процедуре обработки события onLoad мы пользуемся функцией setInterval(). Это один из новых методов версии 1.2  языка JavaScript (то есть версии JavaScript, реализованной в Netscape Navigator 4.0). Им можно пользоваться, чтобы вызывать некую функцию мвновь и вновь через определенные интервалы времени. В прошлом для этого мы пользовались функцией setTimeout(). Функция setInterval() работает почти так же, однако Вам нужно вызвать ее всего лишь один раз.

С помощью setInterval() мы вызываем функцию move() каждые 20 миллисекунд. А функция move(), в свою очередь, всякий раз смещает слой на новую позицию. И поскольку мы вызываем эту функцию вновь и вновь, то мы получаем быстрый скроллинг нашего текста. Все, что мы нужно сделать в функции move() - это вычислить новую координату для слоя и записать ее: document.layers["myLayer2"].left= pos.


Если Вы посмотрите исходный код этой части в онлайновом описании, то увидите, что в действительности мой код выглядит несколько иначе - я добавил некий фрагмент кода с тем, чтобы люди, работающие со старыми версиями JavaScript-браузеров, не получали из-за этого никаких сообщений об ошибках. Как этого можно достичь? Следующий фрагмент кода будет выполняться только на тех браузерах, которые воспонимают язык JavaScript 1.2:

<script language="JavaScript1.2">

<!-- hide

document.write("You are using a JavaScript 1.2 capable browser.");

// -->

</script>

Та же самая проблема возникает, когда мы работаем с объектом Image. Мы можем аналогичным способом переписать кодекс. Установка переменной browserOK решает эту проблему.

(online-версия руководства позволит Вам проверить этот скрипт немедленно)

©1996,1997 by Stefan Koch

e-mail:skoch@rumms.uni-mannheim.de

http://rummelplatz.uni-mannheim.de/~skoch/

Моя книга по JavaScript: http://www.dpunkt.de/javascript

Введение в JavaScript для Мага

© 1996, 1997 Стефан Кох (Stefan Koch)


Содержание раздела