Hacer que StackOverflow explote (bookmarklet) [cerrado]

28

A veces las personas se frustran en la red StackExchange (específicamente SO).

logotipo de stackoverflow modificado

Su tarea es crear un marcador que haga que StackOverflow explote / implosione / destruya de alguna manera. Esto proporcionará una mejor manera de dispersar nuestras frustraciones.

Las normas:

  • debe tener la forma de un marcador
  • debe funcionar en Chrome y Firefox (última versión estable)
  • jQuery está en el sitio, por lo que puede usarlo
  • sin crear una etiqueta de script que extraiga explosionThisPage.js o similar

La puntuación es el número de caracteres que deben copiarse y pegarse, excepto:

  • -1 si incluye una explicación
  • -5 por cada voto a favor
  • -10 si no usas jQuery
  • -10 si hace un sonido de explosión
  • + 9e72 si realmente daña el sitio (F5 debería reparar el daño)

Si el gif te distrae, quítalo.

Bandido
fuente
77
OMI, la especificación no es lo suficientemente nítida para una determinación objetiva de si un envío cumple con ella
Peter Taylor
en un comentario, ya que no es mío: 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
Mi comentario no fue sobre el sistema de puntuación sino sobre la especificación de la tarea.
Peter Taylor
44
De Verdad? Eso debería ser puntos negativos 9*10**72 si realmente logra causar daño al sitio y luego repararlo cuando el usuario vuelve a cargar la página. Eso sería toda una hazaña.
Blacklight Shining
2
@FakeRainBrigand IMO, causar un daño real al sitio que de alguna manera se repara tras la recarga es mucho más impresionante que simplemente causar daño al sitio.
Blacklight Shining

Respuestas:

27

¡Pollo!

Puntuación: 46-1 (explicación) - 5 * 17 (votos) = -40

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

Simplemente toma cada elemento sin hijos y lo reemplaza con el texto 'chicken'.

Capturas de pantalla de muestra:
más pollo
esta pregunta chickenified

imagen

Pomo de la puerta
fuente
Impresionante idea :-) También es interesante ver cosas como "pollo respondido" o el título de la página, que tienen palabras que no son de pollo ...
Brigante
@FakeRainBrigand ¿Eh? El título de la página se convierte en "pollo" para mí ...
Pomo de la puerta
Versión más larga pero más completa, parcialmente basada en mi entrada:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen
@Doorknob, felicidades, obtuviste un puntaje de 15, que fue el más bajo (perdón, me tomó tanto tiempo aceptar uno). Sin embargo, si pudiera hacerlo de nuevo, tendría un voto de -15.
Brigante
1
Debería haber sido HODOR!
SztupY
27

Aquí está mi entrada, que llamaré el borracho :

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

Con 474 caracteres, probablemente no va a ganar ningún premio de golf, pero espero compensarlo con votos a favor. :)

Aquí está el mismo código de ofuscado:

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

Lo que hace es mutar aleatoriamente el texto en la página, intercambiando caracteres adyacentes, eliminando o duplicando caracteres o reemplazándolos por otros adyacentes en el teclado. El efecto es algo sutil al principio, pero déjalo en funcionamiento por un tiempo, y el contenido de la página inevitablemente decaerá en un lío de escritura borracha:

¡Vete a casa, entonces, estás borracho!

PD. El código no es de ninguna manera específico de SO, por lo que funcionará en cualquier sitio web que use jQuery. Pruébelo en Wikipedia para obtener resultados divertidos. La idea se basa en algo que escribí hace años como una interpretación creativa del desafío "99 botellas de cerveza": mi versión introdujo un número cada vez mayor de errores tipográficos en cada verso, hasta que los últimos fueron casi irreconocibles. Si alguien quiere verlo, aquí está el código original de Perl .

Ilmari Karonen
fuente
66
Más lideró el Dyslexinator (sorru, estoy tipificando mientras está ruqning)
TheDoctor
16

No sé por qué esto fue rechazado, me gusta :)

Este no es el más corto, pero creo que es bonito:

133 caracteres -1

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

Sin golf:

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

Explicación: Espero que esto cuente, este script implosiona el sitio en lugar de explotarlo;) Esto solo selecciona un div o un intervalo aleatorio cada 90 ms y lo cierra lentamente.

Fels
fuente
+1 pero el random () no es eficiente para una destrucción completa y controlada, de todos modos me gusta :)
Daniele Brugnara
¿Acabo de arrojarlo a la ventana de URL y no ha pasado nada?
WallyWest
Lo siento Wally, no vi tu comentario. Debe guardarlo como marcador.
siente
12

Porque no se definió si gana el puntaje más alto o más bajo ...

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

Base: 38
Bonis:

  • + 9e72 Daño permanente.

Puntuación final: 9000000000000000000000000000000000000000000000000000000000000000000000038

Por cierto, no lo intenté.

Johannes Kuhn
fuente
1
jaja Por cierto, si le preguntas JavaScript: 9e72+38 === 9e72:-)
Brigante
3
¿Quién pregunta javascript? Usa jQuery .
Johannes Kuhn
44
Err ... ¿debería votar hacia abajo o hacia arriba ...?
Amigo de Kim
1
Oh, lo entiendo ... hace clic en los botones con la clase "vote-off-off" si lo usa. Está etiquetado como desafío de código, lo que implica que gana la puntuación más baja.
Nzall
8

Mi pupose 245 caracteres.

Principalmente no es el más corto, pero me gusta ;-)

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: Explicación:

  • Utilizo la bonita imagen animada ofrecida de la pregunta,
  • Con la ayuda de CSS, los puse sobre la página en página completa, con una opacidad del 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 legible por sí mismo ;-)

-10 No JQuery

Alternativa:

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

Basado en GIF no modificado, encontrado en Wikimedia Commons: Archivo: Fuego animado por nevit.gif

Imagen: Imagen de Wikipedia

Muestra:

ingrese la descripción de la imagen aquí

F. Hauri
fuente
¡Eso es genial!
Brigante el
5

Ok, creo que esto debería cumplir con los criterios:

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

Reemplaza la página actual con "Despiece"

Puntuación: 46
-1 Explicación
-10 No jQuery

35

Johannes Kuhn
fuente
5

Este es agradable y también causa bastante retraso: D

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

Simplemente establece un intervalo que reemplaza todas las cadenas de dígitos con un número aleatorio de 0 a 100. Dos veces por segundo. Crea un montón de errores, como es de esperar, y podría solucionarlo para detener todos los 404 cuando se cambian las URL de las imágenes, pero creo que es más divertido de esta manera y es el código de golf. :RE

Puntuación:

  • 132 base
  • -1 explicación
  • -5 votos a favor
  • -10 no jQuery

Puntuación total: 116

Pomo de la puerta
fuente
No funciona en firefox.
Johannes Kuhn
@JohannesKuhn ¿Qué hace en FF? Funciona en Chrome
Pomo de la puerta
Muestra una página en blanco con un número.
Johannes Kuhn
@JohannesKuhn Creo que lo arreglé; no function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)trabajar para usted ahora?
Pomo de la puerta
Sí, pero un sencillo ;al final haría lo mismo.
Johannes Kuhn
4

165 caracteres (164 puntos)

-1 para explicación

Aquí está mi intento. No es particularmente corto, pero es 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)});

Desliza elementos individuales fuera de la página en direcciones aleatorias. Incluí específicamente el intervalo debido al resaltado de sintaxis (cada color tiene un intervalo separado).

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

Por supuesto, podría acortarse eliminando algunas de las etiquetas, pero avíseme si hay alguna forma de acortarlo sin reducir el rendimiento.

Bandido
fuente
4

181151 caracteres - 1 (explicación) - 10 (sin jQuery) = 140 puntos

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

Se pueden guardar algunos caracteres más omitiendo function(){y utilizando una cadena en su lugar. También tenga en cuenta la extracción de propiedades de uso común, por ejemplo, c='childNodesnos permite hacer en z[c]lugar 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);

Supongo que podría hacer menos puntos usando jQuery y no atravesando propiedades, pero bueno.

Sin golf:

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

Básicamente, esto encuentra el último elemento DOM en la página y lo elimina. Luego sigue haciendo eso por cada 50 milisegundos, lo que me pareció una velocidad agradable promedio para ver una página arrancada desde cero. Es terapéutico, lo juro.

Descargo de responsabilidad: había hecho esto hace algún tiempo y decidí compartirlo, ya que parece apropiado aquí. La fuente está en mi repositorio de GitHub .

Alfa
fuente
¡Esto es genial! Lo edité para incluir una versión más golfizada que guarde algunos caracteres. Espero que no te moleste. Es funcionalmente idéntico.
Brigante
@FakeRainBrigand Para nada, ¡gracias! De hecho, me ayudaste a aprender algunos trucos nuevos y geniales, que era mi intención original al escribirlo. ¡Gracias de nuevo!
Alfa
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;

Obtiene todas las respuestas a la pregunta en forma de <code>javascript:(stuff)</code>que no cambia la ubicación, y las ejecuta todas.

Kuilin Li
fuente
Hmm ... puedo ver muchos espacios en blanco que parecen ser removibles. Quizás deberías eliminarlo.
John Dvorak
3
Estoy bastante seguro de que esto falla la regla: "no crear una etiqueta de script que tire de explosionThisPage.js o similar". Además, no funciona en todas las páginas SO, solo en esta. Además, hace un daño real en las preguntas sobre XSS, por lo que debe agregar 9e72 a su puntaje.
John Dvorak
2

Me gusta este efecto. Básicamente alterna un efecto de diapositiva para cada div en el sitio cada 1 milisegundo.

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

Puntuación

56
-1 Explanation
--------------
55 Total
Dan Grahn
fuente
Niza, pero sólo toogle funcionaría también: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels