Fazer o StackOverflow explodir (bookmarklet) [fechado]


28

Às vezes, as pessoas ficam frustradas com a rede StackExchange (especificamente SO).

logotipo stackoverflow modificado

Sua tarefa é criar um bookmarklet que faça o StackOverflow explodir / implodir / destruir de alguma maneira. Isso fornecerá uma maneira melhor de dispersar nossas frustrações.

As regras:

  • deve estar na forma de um bookmarklet
  • deve funcionar no Chrome e Firefox (mais recente estável)
  • O jQuery está no site, para que você possa usá-lo
  • não é possível criar uma tag de script que puxe explosionThisPage.js ou semelhante

Pontuação é o número de caracteres que precisam ser copiados e colados, exceto:

  • -1 se você incluir uma explicação
  • -5 para cada voto positivo
  • -10 se você não usa jQuery
  • -10 se emitir um som de explosão
  • + 9e72 se realmente prejudicar o site (F5 deve reparar o dano)

Se o gif estiver distraindo, remova-o.


7
Na IMO, a especificação não é nítida o suficiente para determinar objetivamente se uma submissão a atende.
Peter Taylor

em um comentário, porque não é minha: 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
Meu comentário não foi sobre o sistema de pontuação, mas sobre a especificação da tarefa.
Peter Taylor

4
Sério? Isso deve ser menos 9*10**72 pontos se ele realmente causar danos ao site e repará-lo quando o usuário recarregar a página. Isso seria uma façanha.
Blacklight Shining

2
O @FakeRainBrigand IMO, causando danos reais ao site, que de alguma forma é reparado após a recarga, é muito mais impressionante do que simplesmente causar danos ao site.
Blacklight Shining

Respostas:


27

Frango!

Pontuação: 46-1 (explicação) - 5 * 17 (votos) = -40

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

Ele simplesmente pega todos os elementos sem filhos e o substitui pelo texto 'chicken'.

Amostras de screenshots:
mais frango
esta questão chickenified

imagem


Idéia incrível :-) Também é interessante ver coisas como "frango atendido" ou o título da página, que têm palavras que não são de frango ... Por que?
Brigand 14/10

@FakeRainBrigand Huh? O título da página se torna "galinha" para mim ...
Maçaneta da porta

Versão mais longa, porém mais completa, parcialmente baseada na minha entrada:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen 13/12

@ Doorknob, parabéns, você teve uma pontuação de 15, que foi a mais baixa (desculpe, demorei tanto para aceitar uma). Se eu pudesse repetir, porém, faria uma votação no valor de -15.
Brigand

1
Deveria ter sido HODOR!
SztupY

27

Aqui está a minha entrada, que chamarei de bêbado :

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))

Com 474 caracteres, provavelmente não ganhará nenhum prêmio de golfe, mas espero compensá-lo em upvotes. :)

Aqui está o mesmo código ocultado:

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);

O que ele faz é alterar aleatoriamente o texto na página, trocando caracteres adjacentes, excluindo ou duplicando caracteres ou substituindo-os por outros adjacentes no teclado. O efeito é meio sutil no começo, mas deixe em execução por um tempo, e o conteúdo da página inevitavelmente se deteriorará em uma confusão de digitação bêbada:

Vá para casa, então, você está bêbado!

Ps. O código não é específico de SO, então funcionará em qualquer site que use jQuery. Experimente na Wikipedia para obter resultados hilariantes. A idéia se baseia em algo que escrevi anos atrás como uma interpretação criativa do desafio "99 garrafas de cerveja": minha versão introduziu um número crescente de erros de digitação em cada verso, até que os últimos foram quase irreconhecíveis. Se alguém quiser vê-lo, aqui está o código Perl original .


6
Mais lado a lado o dislexinador (sorru, estou digitando enquanto está ruqning) #
TheDoctor

16

Eu não sei por que isso foi rebaixado, eu gosto :)

Este não é o mais curto, mas acho que é bonito:

133 caracteres -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);
}());

Explicação: Espero que isso conte, esse script implode o site em vez de explodi-lo;) Isso apenas seleciona uma div aleatória ou se estende a cada 90ms e a fecha lentamente.


+1 mas o random () não é eficiente para uma completa e controlada destruir, de qualquer maneira eu gosto :)
Daniele Brugnara

Apenas joguei na janela da URL e nada aconteceu ...?
Wally West

Desculpe Wally, não viu seu comentário. Você precisa salvá-lo como marcador.
Fels

12

Porque não foi definido se a pontuação mais alta ou mais baixa vence ...

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

Base: 38
Bonis:

  • + 9e72 Dano permanente.

Pontuação final: 90000000000000000000000000000000000000000000000000000000000000000000000000038

Btw, eu não tentei.


1
haha By the way, se você perguntar em JavaScript: 9e72+38 === 9e72:-)
Brigand

3
Quem pede javascript? Use jQuery .
Johannes Kuhn


4
Err ... devo votar para baixo ou para cima ...?
Amigo de Kim

1
Ah, entendi ... clica nos botões com a classe "vote-down-off" se você o usar. É marcado com desafio de código, o que implica que a menor pontuação ganha.
Nzall

8

Meu pupose 245 caracteres.

Principalmente não é o mais curto, mas eu gosto ;-)

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: Explicação:

  • Eu uso a boa imagem gif animada oferecida da pergunta,
  • Com a ajuda do CSS, eu os coloquei na página inteira, com uma opacidade de 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%;
');

Principalmente legível por si só ;-)

-10 Sem JQuery

Alternativo:

Existe uma alternativa:

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%;');

Baseado em GIF não modificado, encontrado no Wikimedia Commons: File: Animated fire by nevit.gif

Imagem: Imagem da Wikipedia

Amostra:

insira a descrição da imagem aqui


Fantástico!
Brigand 13/11

5

Ok, acho que isso deve atender aos critérios:

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

Substitui a página atual por "Explodido"

Pontuação: 46
-1 Explicação
-10 No jQuery

35


5

Essa é divertida e causa um pouco de atraso também: D

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

Ele apenas define um intervalo que substitui todas as seqüências de dígitos por um número aleatório de 0 a 100. Duas vezes por segundo. Ele cria vários erros, como você poderia esperar, e eu poderia corrigi-lo para interromper todos os 404 quando as URLs de imagem são alteradas, mas acho que é mais divertido dessa maneira e é código de golfe. : D

Ponto:

  • 132 base
  • -1 explicação
  • -5 voto positivo
  • -10 no jQuery

Pontuação total: 116


Não funciona no Firefox.
Johannes Kuhn

@JohannesKuhn O que faz na FF? Funciona no Chrome
Maçaneta da porta

Exibe uma página em branco com um número.
Johannes Kuhn

@JohannesKuhn Acho que consertei; não function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)trabalhar para você agora?
Maçaneta

Sim, mas um single ;no final faria o mesmo.
Johannes Kuhn

4

165 caracteres (164 pontos)

-1 para explicação

Aqui está a minha tentativa. Não é particularmente curto, mas é divertido.

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)});

Ele desliza elementos individuais para fora da página em direções aleatórias. Incluí especificamente extensão por causa do realce da sintaxe (cada cor tem uma extensão separada).

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);
});

É claro que isso poderia ser reduzido com a remoção de algumas tags, mas deixe-me saber se há alguma maneira de reduzi-lo sem reduzir o desempenho.


4

181 151 caracteres - 1 (explicação) - 10 (sem jQuery) = 140 pontos

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);

Mais alguns caracteres podem ser salvos, omitindo function(){e usando uma string. Observe também que a extração de propriedades comumente usadas, por exemplo, c='childNodesnos permite fazer em z[c]vez de 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);

Eu acho que eu poderia fazer menos pontos usando jQuery e não atravessando propriedades, mas tudo bem.

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);

Basicamente, ele encontra o elemento DOM mais recente da página e o remove. Em seguida, continua fazendo isso a cada 50 milissegundos, o que eu achei uma velocidade média, agradável, de ver uma página sendo rasgada do zero. É terapêutico, eu juro.

Disclaimer: Eu fiz isso há algum tempo e decidi compartilhá-lo, pois parece apropriado aqui. A fonte está no meu repositório GitHub .


Isso é ótimo! Editei-o para incluir uma versão mais golfe que economiza alguns caracteres. Espero que você não se importe. É funcionalmente idêntico.
Brigand

@FakeRainBrigand De jeito nenhum, obrigado! Na verdade, você me ajudou a aprender alguns novos truques legais, que era minha intenção original ao escrevê-lo. Obrigado novamente!
Alpha

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;

Ele obtém todas as respostas à pergunta na forma de <code>javascript:(stuff)</code>que não altera o local e executa todas elas.


Hmm ... vejo muitos espaços em branco que parecem removíveis. Talvez você deva removê-lo.
precisa

3
Tenho certeza de que isso não cumpre a regra: "não é possível criar uma tag de script que puxe explosionThisPage.js ou similar". Além disso, ele não funciona em todas as páginas SO, apenas nesta. Além disso, causa danos reais em perguntas sobre o XSS, portanto, você deve adicionar 9e72 à sua pontuação.
precisa

2

Eu gosto desse efeito. Basicamente, alterna um efeito de slide para cada div no site a cada 1 milissegundo.

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

Ponto

56
-1 Explanation
--------------
55 Total

Bom, mas apenas o toogle também funcionaria: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.