Электронная библиотека

Xakep

Xakep

Приколы javascript

Xakep, номер #013, стр. 013-060-1


Автор: Алексей Маснов

Поговори мне тут!

Здравствуй. Молчать! Поговори мне ещё тут. Внимай, даю установку: скрипты - это круто. Ты это знаешь, я это знаю, короче - мы это знаем. Установку дал! Успешно. Теперь о них - любимых скриптах - и поговорим. Приятно наваять своими ручками какую-нибудь скриптятину на яве и дать соседу-ламаку пропереться, а пока тот будет её разглядывать - дать ему пинка. Вот только бага: по ходу всё клевое в скриптинге уже придумано. Предложить что-либо кардинально новое (во всяком случае, мне) уже сложно, лучше пива попить пойти. С другой стороны, можно легко насочинять целый ворох вторичных вещей, которые при ближайшем рассмотрении сведутся к нагромождению все тех же базовых методов. А это не правильно - вторичное, само по себе, на хрен никому не нужно.

Наконец (не на конец, а в конце концов!), наступило "творческое озарение": если нельзя ничего выжать внутри документа, то надо переходить на качественно новый уровень манипуляции самим окном броузера.

Оконный глумняк

В результате штурма эпохального детища Microsoft MSDN (Microsoft Developer Network - электронная документация к Visual Studio 6.0, рекомендуемая к неустанному изучению), мною были выужены два новых метода объекта window: moveTo(x, y) и resizeTo(x, y), которые, соответственно, отвечают за перемещение окна броузера и изменение его размера на рабочем столе. В качестве аргументов задаются два целочисленных значения, которые являются в первом случае координатами левого верхнего угла окна броузера, а во втором - его шириной и высотой. Перенося сухую теорию на язык практики, легко получаем следующий глумливый пример:

1. Медленно раскрывающееся окно:

Медленно раскрывающееся окно

Добро пожаловать на крутую страницу крутого хакера!

В результате работы этого скрипта мы имеем (имеем - не значит ИМЕЕМ, это значит - просто имеем) принудительное сжатие окна броузера до одной второй от размера рабочего стола с принудительным раскрытием его вновь до прежнего размера. Т.к. окно раскрывается не мгновенно, это создает достаточно любопытный визуальный эффект, от которого у ламера отъедет башня, и он в ужасе побежит за антивирусом :).

Технология этого скрипта такова: как только страница будет полностью загружена, вызывается функция "prepare()" (за это отвечает триггер тэга BODY onload=prepare), которая сжимает указанными выше методами окошко броузера и помещает его в левый верхний угол экрана. Также в ней переназначаются переменные width и height до их реальных значений (ведь окно уже меньше в два раза!) и вызывается новая функция "openwindow()", восстанавливающая окно до нормального размера. Метод "resizeBy" является аналогом метода "resizeTo", только используются не абсолютные, а относительные параметры (т.е. при параметрах 4 и 3 окно увеличивается на 4 по горизонтали и 3 по вертикали относительно текущей позиции). Таким образом, окно постепенно увеличивается, пока не заполнит весь рабочий стол. Выбор именно четверки и тройки в качестве приращения связан с тем, что наиболее популярные разрешения (640х480, 800х600 и 1024х768) относятся как 4/3. Однако можно пойти еще дальше и заставить окно броузера бегать по всему экрану! То-то юзер испугается! :) Для этого исполним следующий пример:

Содержание  Вперед на стр. 013-060-2