Make StackOverflow Explode (букмарклет) [закрыто]

28

Иногда люди разочаровываются в сети StackExchange (особенно SO).

Логотип stackoverflow изменен

Ваша задача - создать букмарклет, который заставит StackOverflow каким-то образом взорваться / взорваться / уничтожить. Это обеспечит лучший способ рассеять наши разочарования.

Правила:

  • оно должно быть в форме букмарклета
  • должен работать в Chrome и Firefox (последняя стабильная версия)
  • JQuery на сайте, так что вы можете использовать его
  • нет создания тега сценария, который тянет взрываThisPage.js или аналогичный

Оценка - это количество символов, которые необходимо скопировать и вставить, кроме:

  • -1 если вы включите объяснение
  • -5 за каждое голосование
  • -10 если вы не используете jQuery
  • -10 если он издает звук взрыва
  • + 9e72, если это действительно наносит ущерб сайту (F5 должен исправить повреждение)

Если GIF отвлекает, удалите его.

разбойник
источник
7
ИМО спецификация недостаточно точна для объективного определения того, соответствует ли заявка.
Питер Тейлор
в комментарии, так как это не мое: javascript: varwww_WHAK_com = 'http://www.is-a-jerk.com/flash/url.asp?flash=10&insult=off&destroy=' + encodeURIComponent(top.location.href.replace('http://', '').replace('https://', '')); top.location.href = www_WHAK_com; void(0);
SeanC
1
Мой комментарий был не о системе оценки, а о спецификации задачи.
Питер Тейлор
4
В самом деле? Это должно быть минус 9*10**72 баллы, если ему действительно удается нанести вред сайту, а затем исправить его, когда пользователь перезагрузит страницу. Это было бы настоящим подвигом.
Blacklight Shining
2
@FakeRainBrigand IMO, нанесение реального вреда сайту, который каким-то образом восстанавливается после перезагрузки, гораздо более впечатляет, чем просто причинение вреда сайту.
Blacklight Shining

Ответы:

27

Курица!

Оценка: 46 - 1 (объяснение) - 5 * 17 (голосов) = -40

javascript:$('*:not(:has(*))').text('chicken')

Он просто берет каждый элемент без дочерних элементов и заменяет его текстом 'chicken'.

Образцы скриншотов:
больше курицы
этот вопрос куринизировал

образ

Дверная ручка
источник
Потрясающая идея :-) Также интересно видеть такие вещи, как «ответ курица» или заголовок страницы, в которых есть не-куриные слова ... Почему?
Разбойник
@FakeRainBrigand А? Заголовок страницы для меня становится "курицей" ...
Ручка двери
Более длинная, но более полная версия, частично основанная на моей записи:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ильмари Каронен
@ Doorknob, поздравляю, у вас был 15 баллов, который был самым низким (извините, я так долго его принимал). Если бы я мог сделать это снова, я бы сделал голосование -15.
Разбойник
1
Должен был быть HODOR!
Штупы
27

Вот моя запись, которую я назову пьяной :

javascript:void(setInterval(function(){c='1234567890poiuytrewqasdfghjklmnbvcxzZXCVBNMLKJHGFDSAQWERTYUIOP=)(/&%25$%23"!1';$(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3&&/\S/.test(this.nodeValue)){a=this.nodeValue.split('');x=0;for(i=0;i<a.length;i++){r=Math.random()*9999;if(r<10){x=1;j=c.indexOf(a[i]);a[i]=(r<4%3F(t=a[i-1],a[i-1]=a[i],t):r<5%3F'':r<6%3Fa[i]+a[i]:j<0%3Fa[i]:c.charAt(j+(r<8%3F1:-1)))}}if(x)this.nodeValue=a.join('')}})},100))

При 474 символах, вероятно, он не выиграет никаких призов для гольфа, но я надеюсь восполнить это в голосовании. :)

Вот тот же код де-обфускации:

setInterval(function () {
  var c = '1234567890poiuytrewqasdfghjklmnbvcxzZXCVBNMLKJHGFDSAQWERTYUIOP=)(/&%$#"!1';
  $(':not(iframe,script,style)').contents().each(function () {
    if (this.nodeType==3 && /\S/.test(this.nodeValue)) {
      var a = this.nodeValue.split('');
      var x = 0;
      for (i = 0; i < a.length; i++) {
        r = Math.random() * 9999;
        if (r < 10) {
          x = 1;
          j = c.indexOf(a[i]);
          a[i] = ( r < 4 ? (t = a[i-1], a[i-1] = a[i], t)
                 : r < 5 ? ''
                 : r < 6 ? a[i] + a[i]
                 : j < 0 ? a[i] : c.charAt(j + (r < 8 ? 1 : -1)) ); 
        }
      }
      if (x) this.nodeValue = a.join('');
    }
  });
}, 100);

Он случайным образом изменяет текст на странице, меняя местами соседние символы, удаляя или дублируя символы или заменяя их теми, которые расположены рядом с ними на клавиатуре. Эффект поначалу довольно тонкий, но оставьте его на некоторое время, и содержимое страницы неизбежно превратится в беспорядок пьяного набора текста:

Иди домой, ТАК, ты пьян!

Ps. Код никоим образом не зависит от SO, поэтому он будет работать на любом веб-сайте, использующем jQuery. Попробуйте это в Википедии для веселых результатов. Идея основана на том, что я написал несколько лет назад как творческое толкование задачи «99 бутылок пива»: моя версия вводила медленно увеличивающееся количество опечаток в каждом стихе, пока последние не были почти неузнаваемы. Если кто-то хочет это увидеть, вот оригинальный код Perl .

Илмари Каронен
источник
6
Дайлексинатор (сорру, я набираю обороты, пока играю)
TheDoctor
16

Я не знаю, почему за это проголосовали, мне это нравится :)

Это не самое короткое, но я думаю, что это довольно:

133 символа -1

javascript:(function(){setInterval(function(){$("div, span").eq(Math.round(Math.random()*$("div, span").length)).hide(500)},90)}());

Ungolfed:

javascript:(function(){  
         window.setInterval(function() {
                 i = Math.round(Math.random() * $("div, span").length);
                 $("div, span").eq(i).hide("slow");
         } , 90);
}());

Объяснение: Я надеюсь, что это имеет значение, этот сценарий взрывает сайт, а не взрывает его;) Это просто выбирает случайный div или span каждые 90 мс и закрывает его медленно ..

Fels
источник
+1, но
функция
Просто бросил его в окно URL, и ничего не случилось ,,,?
WallyWest
Извини, Уолли, не увидел твой комментарий. Вы должны сохранить его как закладку.
Фелс
12

Потому что не было определено, побеждает более высокий или более низкий балл ...

javascript:$(".vote-down-off").click()

База: 38
бонусов:

  • + 9e72 постоянный урон.

Итоговый счет: 9000000000000000000000000000000000000000000000000000000000000000000000000000000000038

Кстати, я не пробовал.

Йоханнес Кун
источник
1
ха-ха Кстати, если вы спросите JavaScript: 9e72+38 === 9e72:-)
Бандит
3
Кто спрашивает JavaScript? Используйте jQuery .
Йоханнес Кун
16
i.stack.imgur.com/sGhaO.gif : D
Ручка двери
4
Э-э ... я должен голосовать вниз или вверх ...?
Друг Ким
1
О, я понял ... он нажимает кнопки с классом "понижение голоса", если вы используете его. Он помечен как «вызов кода», что означает, что выигрывает самый низкий балл.
Nzall
8

Моя планировка 245 символов.

В основном не короче, но мне это нравится ;-)

javascript:document.body.innerHTML+='<img%20id="bigMsk"%20src="http://i.stack.imgur.com/VWPZg.gif">';document.getElementById('bigMsk').setAttribute('style','z-index:1;opacity:.6;display:block;position:fixed;top:0;left:0;width:100%;height:100%;');

-1: объяснение:

  • Я использую хороший предложенный анимированный рисунок из вопроса,
  • С помощью CSS я разместил их на странице на полную страницу с непрозрачностью 60%.

:

document.body.innerHTML+=
   '<img%20id="bigMsk"%20src="http://i.stack.imgur.com/VWPZg.gif">';
document.getElementById('bigMsk').setAttribute('style',
    'z-index:1;
     opacity:.6;
     display:block;
     position:fixed;
     top:0;
     left:0;
     width:100%;
     height:100%;
');

В основном читабельно само по себе ;-)

-10 Нет JQuery

Альтернатива:

Есть альтернатива:

javascript:document.body.innerHTML+='<img%20id="bigMsk"%20src="http://i.stack.imgur.com/aTtWM.gif">';document.getElementById('bigMsk').setAttribute('style','z-index:1;opacity:.6;display:block;position:fixed;top:0;left:0;width:100%;height:100%;');

Основано на неизмененном GIF, найденном в Wikimedia Commons: File: Animated fire by nevit.gif

Образ: Изображение из Википедии

Образец:

введите описание изображения здесь

Ф. Хаури
источник
Это потрясающе!
Разбойник
5

Хорошо, я думаю, что это должно соответствовать критериям:

javascript:document.write("<h1>Exploded</h1>")

Заменяет текущую страницу на «Разнесенный»

Оценка: 46
-1 Объяснение
-10 Нет jQuery

35

Йоханнес Кун
источник
5

Это одно удовольствие, и оно тоже вызывает некоторое отставание: D

javascript:setInterval(function(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0});},500)

Он просто устанавливает интервал, который заменяет все строки цифр случайным числом от 0 до 100. Дважды в секунду. Как и следовало ожидать, он создает кучу ошибок, и я мог бы исправить это, чтобы остановить все 404-е при изменении URL-адресов изображений, но я думаю, что так веселее, и это - гольф кода. : D

Гол:

  • 132 базы
  • -1 объяснение
  • -5 upvote
  • -10 нет JQuery

Общий балл: 116

Дверная ручка
источник
Не работает в Firefox.
Йоханнес Кун
@JohannesKuhn Что это делает в FF? Работает в Chrome
Doorknob
Отображает пустую страницу с номером.
Йоханнес Кун
@JohannesKuhn Я думаю, я исправил это; делает function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)работу для вас сейчас?
Ручка двери
Да, но сингл ;в конце сделал бы то же самое.
Йоханнес Кун
4

165 символов (164 балла)

-1 для объяснения

Вот моя попытка. Это не особенно коротко, но весело.

javascript:r=Math.random;$("a,span,p").each(function(){var a=$(this);a.css({position:"relative"});a.delay(1E4*r()).animate({left:9E3*r()-4E3,top:9E3*r()-4E3},555)});

Он сдвигает отдельные элементы со страницы в случайных направлениях. Я специально включил span из-за подсветки синтаксиса (каждый цвет имеет отдельный span).

r = Math.random;
$('a,span,p').each(function () {
    var t = $(this);
    t.css({
        position: 'relative'
    });

    t.delay(r()*10000).animate({
        left: r() * 9e3 - 4e3,
        top: r() * 9e3 - 4e3
    }, 555);
});

Конечно, его можно сократить, удалив некоторые теги, но дайте мне знать, если есть какие-то способы сократить его без снижения производительности.

разбойник
источник
4

181 151 символ - 1 (объяснение) - 10 (без jQuery) = 140 баллов

javascript:i=setInterval(function(){for(var a=document;0!==a.childNodes.length;)a=a.childNodes[a.childNodes.length-1];a!==document?a.parentNode.removeChild(a):clearInterval(i)},50);

Можно сохранить еще несколько символов, опуская function(){и используя вместо них строку. Также обратите внимание на извлечение часто используемых свойств, например, c='childNodesпозволяет нам делать z[c]вместо z.childNodes.

javascript:h=setInterval('d=z=document;c="childNodes";for(l="length";z[c][l];z=z[c][z[c][l]-1]);z!=d?z.parentNode.removeChild(z):clearInterval(h)',50);

Я думаю, я мог бы заработать меньше очков, используя jQuery, а не обходные свойства, ну да ладно.

Ungolfed:

var intervalHandle = setInterval(function() {
    var lastElement = document;
    //get last element
    while (lastElement.childNodes.length !== 0) {
        lastElement = lastElement.childNodes[lastElement.childNodes.length - 1];
    }

    if(lastElement !== document) {
        lastElement.parentNode.removeChild(lastElement);
    } else {
        clearInterval(intervalHandle);
    }
}, 50);

В основном это находит последний элемент DOM на странице и удаляет его. Затем продолжайте делать это каждые 50 миллисекунд, что, по моему мнению, является довольно хорошей скоростью, чтобы увидеть, как страница разрывается с нуля. Это терапевтически, клянусь.

Отказ от ответственности: я сделал это некоторое время назад и решил поделиться этим, так как это кажется уместным здесь. Источник находится в моем репозитории GitHub .

Альфа
источник
Это здорово! Я отредактировал его, чтобы включить версию для игры в гольф, которая сохраняет несколько персонажей. Надеюсь, ты не против. Это функционально идентично.
Разбойник
@FakeRainBrigand Совсем нет, спасибо! На самом деле, вы помогли мне выучить несколько новых классных трюков, что и было моим первоначальным намерением при написании. Еще раз спасибо!
Альфа
3

Javascript, 281

javascript:$('body').html().split('<code>javascript:').forEach(function (a) {if (a.indexOf("location")*a.indexOf("write")*a.indexOf("noscript")==-1) try{exec(a.split("</code>")[0].replace(/&#(\d+)/g, function(match, dec) {return String.fromCharCode(dec);}))} catch (e) {}});void 0;

Он получает каждый ответ на вопрос в форме <code>javascript:(stuff)</code>, которая не меняет местоположение, и запускает их все.

Куйлин Ли
источник
Хм ... Я вижу много пробелов, которые кажутся съемными. Возможно, вам следует удалить его.
Джон Дворжак
3
Я почти уверен, что это не соответствует правилу: «не создавайте тег сценария, который извлекает exploThisPage.js или аналогичный». Кроме того, он не работает на каждой странице SO, только на этой. Кроме того, это наносит реальный урон вопросам, касающимся XSS, поэтому вы должны добавить 9e72 к вашему счету.
Джон Дворжак
2

Мне нравится этот эффект. Это в основном переключает эффект слайда для каждого элемента на сайте каждую 1 миллисекунду.

javascript:setInterval(function(){$('div').toggle()},1)

Гол

56
-1 Explanation
--------------
55 Total
Дэн Гран
источник
Хорошо, но только toogle тоже сработает: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels