То что ниже, скорее всего, относится к КУ косвенно (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+"&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+"&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;
Ну вот и все. Пока.
Удачи
A> потестировать не удалось нормально — мои извинения
Да, после того, как удалось оттестировать в ослике и лисице понял, что это не работает
. Смело проходите мимо. Опера ввела в заблуждение, поэтому предлагаю оценки ставить старым путем
...
Здравствуйте, 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)
Здравствуйте, anvaka, Вы писали:
A>Для экстремалов можно посоветовать document.all
IE похрустел винтом и свалился.