Бегущая строка
Другой часто встречающийся пример - бегущая строка. Строка может бежать
либо в поле статуса (низ экрана), либо внутри поля формы. Рассмотрим .
Здесь приведен фрагмент страницы компании "Демос", разработанный
Дмитрием Алтуховым ().
Как видно из этого примера, прокрутка осуществляется за счет изменения
содержания отображаемой переменной msg1. Запускается бегущая строка
в момент загрузки страницы по событию onLoad. Из комментария к примеру
следует, что автор не несет ответственности за проблемы, которые может
данный скрипт породить при его отображении браузером на компьютере пользователя.
Собственно проблема вызвана применением функции setTimeout. Изначально
предполагалось, что браузер, который поддерживает JavaScript, будет исполняться
в среде многопоточных операционных систем. В этом случае к моменту порождения
нового потока старый уже завершится, и setTimeout будет, таким образом,
порождать последовательно исполняемые потоки. Однако при реализации JavaScript
в Netscape Navigator 2.0 не все было выполнено аккуратно, и setTimeout
стала просто "пожирать" ресурсы компьютера. Системы Windows 3.x
вообще не являются многопоточными, и в них просто происходит переполнение
стека при выполнении данного скрипта. Весь вопрос заключается только в
том, как быстро "упадет" система, а это зависит от объема исполняемой
по setTimeout функции. Самое лучшее, что можно посоветовать, если вдруг
на экране появляется прокрутка, - поскорее покинуть такую страницу. Справедливости
ради, следует отметить, что прокрутку можно организовать и другими способами,
поэтому ее появление не обязательно должно вызывать крах системы или браузера.
Прокручивать можно и вертикальные фрагменты. Достигается это за счет
использования полей типа TEXTAREA ().
Собственно все организовано так же, как и в предыдущем примере, только
прокрутка осуществляется в поле формы; для этого поля введен параметр переноса
текста на новую строку, ширина поля подобрана под размер выводимых строк.
Прокрутка осуществляется как по событию onLoad, так и при нажатии на кнопку
Start/Stop. В этом случае не надо немедленно покидать страницу с прокруткой
- достаточно просто ее остановить.