Смешной Javascript
От: anvaka Украина Yasiv
Дата: 22.01.07 01:53
Оценка: 38 (15) :))) :))

Трюки с Javascript.

То что ниже, скорее всего, относится к КУ косвенно (just for fun), и кроме того может быть опасно. Поэтому настоятельно рекомендую не принимать все близко к сердцу.

Здесь вы найдете:
1. Как вскружить рисунки на странице.
2. Как отредактировать страницу.
3. Как поставить ссылку на оценку своего rsdn-сообщения прямо в свое сообщение (не будучи экстрасенсом).

В основе всех трюков лежит простая техника: ввод в браузере в строку адреса слова "javascript:" дает доступ пользователю к выполнению клиентских скриптов.


1. Для начала классика
Автор: Ael
Дата: 22.09.06
. Следующий код приводит в крутящийся восторг все рисунки, обнаруженные на странице :

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.images; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);


Проверим на странице со смайликами : Скрпируйте код, кликните сюда, и в строке адреса вставьте код. Жмем Enter и наблюдаем за танцем кргулолицых.

В этом классическом примере есть место индивидуальности. Например, заставить летать не рисунки, а ссылки (чем не леталки?):

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24; x4=300; y4=200; x5=300; y5=200; DI=document.links; DIL=DI.length; function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style; DIS.position='absolute'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5; DIS.top=Math.cos(R*y1+i*y2+y3)*y4+y5}R++}setInterval('A()',5); void(0);


Для экстремалов можно посоветовать document.all


2. Редактирование страницы.

Это может быть настоящим тестом для security сайта с одной стороны, и удобной фичей для сайтов с огромным количеством нежелательных баннеров. Правда, скорее это все же забава, чем средство. Итак:

javascript:document.body.contentEditable='true'; document.designMode='on'; void(0);


Если захотите отредактировать какой-то из фреймов здесь, на РСДНе, код придется немного изменить:

javascript:frames[1].document.body.contentEditable='true'; frames[1].document.designMode='on'; void(0);


Обратно выключается это инвертированием оператора и режима:

javascript:document.body.contentEditable='false'; document.designMode='off'; void(0);


До возможного похода в Баню, хотел бы напомнить, что редактирование контента проходит только на стороне клиента и существенной угрозы со стороны злоумшленников, через эту лазейку, ждать не стоит


3. Ссылки на оценки из своего поста.

Не знаю, зачем это может понадобиться... Как и не уверен, что это всегда будет работать (потестировать не удалось нормально — мои извинения)

javascript:str=document.referrer;str=str.match(/mid=\d+/);if(str!=null){str="http://www.rsdn.ru/Forum/Private/Rate.aspx?"+str+"&amp;rate=3"; window.location=str;} else window.location=document.referrer; javascript:str=document.referrer;str=str.match(/mid=\d+/);if(str!=null){str="http://www.rsdn.ru/Forum/Private/Rate.aspx?"+str+"&amp;rate=-2"; window.location=str;} else window.location=document.referrer;

Ссылка на самого себя.

Вся соль в document.referrer + regexp . Адрес ссылки на тройку:

javascript:str=document.referrer;str=str.match(/mid=\d+/);if(str!=null){str="http://www.rsdn.ru/Forum/Private/Rate.aspx?"+str+"&rate=3"; window.location=str;} else window.location=document.referrer;


Ну вот и все. Пока.

Удачи
Re[2]: Смешной Javascript
От: CEMb  
Дата: 22.01.07 03:26
Оценка: 16 (8) :))) :))
Здравствуйте, anvaka, Вы писали:

A>> потестировать не удалось нормально — мои извинения


A>Да, после того, как удалось оттестировать в ослике и лисице понял, что это не работает . Смело проходите мимо. Опера ввела в заблуждение, поэтому предлагаю оценки ставить старым путем ...


Некторое время назад встречал "вскружение" в другом месте.
Вот ещё несколько моих вариаций:

Тошниловка:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;x4=10; y4=10; x5=30; y5=20; DI=document.images; DIL=DI.length;function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style;DIS.position='relative'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=Math .cos(R*y1+i*y2+y3)*y4+y5}R++ }setInterval('A()',5); void(0)


Пятница:

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;x4=3; y4=40; x5=30; y5=20; DI=document.images; DIL=DI.length;function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style;DIS.position='relative'; DIS.left=Math.sin(R*x1+i*x2+x3)*x4+x5;DIS.top=-Math.abs(Math .cos(R*y1*2+i*y2+y3)*y4)+y5}R+=2 }setInterval('A()',5); void(0)


Иная_реальность (утро_понедельника):

javascript:R=0; x1=.1; y1=.05; x2=.25; y2=.24; x3=1.6; y3=.24;x4=3; y4=40; x5=30; y5=20; DI=document.images; DIW=new Array(); DIH=new Array(); DIL=DI.length; for(i=0;i<DIL;i++){DIW[i]=DI[i].width; DIH[i]=DI[i].height;} function A(){for(i=0; i<DIL; i++){DIS=DI[ i ].style;DIS.position='relative'; DIS.width=Math.abs(Math.sin(R*x1/2+i*x2+x3)*x4+x5)+DIW[i];DIS.height=Math.abs(Math.cos(R*y1/2+i*y2+y3)*y4+y5)+DIH[i];}R++; }setInterval('A()',5); void(0)
Re: Смешной Javascript
От: anvaka Украина Yasiv
Дата: 22.01.07 01:58
Оценка: +1
A> потестировать не удалось нормально — мои извинения

Да, после того, как удалось оттестировать в ослике и лисице понял, что это не работает . Смело проходите мимо. Опера ввела в заблуждение, поэтому предлагаю оценки ставить старым путем ...
Re: Смешной Javascript
От: Рома Мик Россия http://romamik.com
Дата: 22.01.07 08:15
Оценка: :)
Здравствуйте, anvaka, Вы писали:

A>Для экстремалов можно посоветовать document.all

IE похрустел винтом и свалился.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.