Fai esplodere StackOverflow (bookmarklet) [chiuso]


28

A volte le persone si sentono frustrate sulla rete StackExchange (in particolare SO).

logo stackoverflow modificato

Il tuo compito è creare un bookmarklet che fa esplodere / implodere / distruggere StackOverflow in qualche modo. Ciò fornirà un modo migliore di disperdere le nostre frustrazioni.

Le regole:

  • deve essere nella forma di un bookmarklet
  • deve funzionare in Chrome e Firefox (ultima versione stabile)
  • jQuery è sul sito, quindi puoi usarlo
  • nessuna creazione di un tag di script che tira esplosioneThisPage.js o simile

Il punteggio è il numero di caratteri che devono essere copiati e incollati, tranne:

  • -1 se includi una spiegazione
  • -5 per ciascun voto
  • -10 se non si utilizza jQuery
  • -10 se emette un'esplosione
  • + 9e72 se effettivamente danneggia il sito (F5 dovrebbe riparare il danno)

Se la gif sta distraendo, rimuovila.


7
IMO la specifica non è abbastanza nitida per una determinazione obiettiva se una richiesta la soddisfa.
Peter Taylor,

in un commento, poiché non è mio: 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
Il mio commento non riguardava il sistema di punteggio, ma le specifiche dell'attività.
Peter Taylor,

4
Veramente? Dovrebbero essere meno i 9*10**72 punti se riesce effettivamente a causare danni al sito e quindi a ripararlo quando l'utente ricarica la pagina. Sarebbe una vera impresa.
Blacklight Shining

2
@FakeRainBrigand IMO, causare danni reali al sito che in qualche modo viene riparato al momento del ricaricamento è molto più impressionante che semplicemente causare danni al sito.
Blacklight Shining

Risposte:


27

Pollo!

Punteggio: 46-1 (spiegazione) - 5 * 17 (voti) = -40

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

Prende semplicemente ogni elemento senza figli e lo sostituisce con il testo 'chicken'.

Schermate di esempio:
più pollo questa domanda si è trasformata in pollo

Immagine


Fantastica idea :-) È anche interessante vedere cose come "risposta pollo" o il titolo della pagina, che hanno parole non pollo ... Perché?
Brigand,

@FakeRainBrigand Huh? Il titolo della pagina diventa "pollo" per me ...
Maniglia della porta

Versione più lunga ma più approfondita, parzialmente basata sul mio contributo:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen,

@Doorknob, complimenti, hai avuto un punteggio di 15, che era il più basso (mi dispiace che mi ci sia voluto così tanto tempo per accettarne uno). Se potessi rifarlo di nuovo, però, farei un voto del valore di -15, comunque.
Brigand,

1
Avrebbe dovuto essere HODOR!
SztupY,

27

Ecco la mia voce, che chiamerò ubriacatore :

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 caratteri, probabilmente non vincerà alcun premio di golf, ma spero di rimediare ai voti. :)

Ecco lo stesso codice de-offuscato:

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

Ciò che fa è mutare casualmente il testo sulla pagina, scambiando caratteri adiacenti, eliminando o duplicando caratteri o sostituendoli con quelli adiacenti sulla tastiera. All'inizio l'effetto è un po 'sottile, ma lascialo in esecuzione per un po' e il contenuto della pagina decadrà inevitabilmente in un casino di battitura da ubriaco:

Vai a casa, così, sei ubriaco!

Ps. Il codice non è in alcun modo specifico di SO, quindi funzionerà su qualsiasi sito Web che utilizza jQuery. Provalo su Wikipedia per risultati esilaranti. L'idea si basa su qualcosa che ho scritto anni fa come interpretazione creativa della sfida "99 bottiglie di birra": la mia versione ha introdotto un numero lentamente crescente di errori di battitura in ciascun verso, fino a quando gli ultimi erano quasi irriconoscibili. Se qualcuno vuole vederlo, ecco il codice Perl originale .


6
Più lide the Dyslexinator (sorru, sto scrivendo mentre è ruqning)
TheDoctor,

16

Non so perché sia ​​stato downvoted, mi piace :)

Questo non è il più breve, ma penso che sia carino:

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

Spiegazione: Spero che questo valga, questo script implode il sito invece di esploderlo;) Questo seleziona semplicemente un div o intervallo casuale ogni 90 ms e lo chiude lentamente ..


+1 ma il random () non è efficiente per una distruzione completa e controllata, comunque mi piace :)
Daniele Brugnara,

L'ho appena lanciato nella finestra dell'URL e non è successo niente ,,,?
WallyWest,

Scusa Wally, non ho visto il tuo commento. Devi salvarlo come segnalibro.
Soddisfa il

12

Perché non è stato definito se il punteggio più alto o più basso vince ...

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

Base: 38
Bonis:

  • + 9e72 danni permanenti.

Punteggio finale: 900000000000000000000000000000000000000000000000000000000000000000000000038

A proposito, non l'ho provato.


1
haha A proposito, se chiedi JavaScript: 9e72+38 === 9e72:-)
Brigand

3
Chi chiede javascript? Usa jQuery .
Johannes Kuhn,


4
Err ... dovrei votare in basso o in alto ...?
Amico di Kim,

1
Oh, ho capito ... fa clic sui pulsanti con la classe "voto in discesa" se lo usi. È taggato con code-challenge, il che implica che vince il punteggio più basso.
Nzall,

8

Le mie pupille 245 caratteri.

Principalmente non il più corto, ma mi piace ;-)

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: Spiegazione:

  • Uso la simpatica immagine gif animata offerta dalla domanda,
  • Con l'aiuto dei CSS, li ho inseriti sulla pagina a tutta pagina, con un'opacità 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 leggibile da solo ;-)

-10 No JQuery

Alternativa:

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

Basato su GIF non modificata, disponibile su Wikimedia Commons: File: Animated fire di nevit.gif

Immagine: Immagine da Wikipedia

Campione:

inserisci qui la descrizione dell'immagine


È fantastico!
Brigand,

5

Ok, penso che questo dovrebbe soddisfare i criteri:

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

Sostituisce la pagina corrente con "Esploso"

Punteggio: 46
-1 Spiegazione
-10 No jQuery

35


5

Questo è divertente e causa anche un po 'di ritardo: D

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

Imposta solo un intervallo che sostituisce tutte le stringhe di cifre con un numero casuale compreso tra 0 e 100. Due volte al secondo. Crea un sacco di errori, come ci si potrebbe aspettare, e potrei ripararlo per fermare tutti i 404 quando gli URL delle immagini vengono cambiati, ma penso che sia più divertente in questo modo ed è il golf del codice. : D

Punto:

  • 132 base
  • -1 spiegazione
  • -5 voto positivo
  • -10 no jQuery

Punteggio totale: 116


Non funziona in Firefox.
Johannes Kuhn,

@JohannesKuhn Cosa fa in FF? Funziona in Chrome
Manopola

Visualizza una pagina vuota con un numero.
Johannes Kuhn,

@JohannesKuhn Penso di averlo corretto; non function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)funzionare per voi adesso?
Maniglia della porta

Sì, ma un singolo ;alla fine farebbe lo stesso.
Johannes Kuhn,

4

165 caratteri (164 punti)

-1 per spiegazione

Ecco il mio tentativo. Non è particolarmente breve, ma è divertente.

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

Fa scorrere singoli elementi fuori dalla pagina in direzioni casuali. In particolare ho incluso l'intervallo a causa dell'evidenziazione della sintassi (ogni colore ha un intervallo separato).

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

Naturalmente potrebbe essere abbreviato rimuovendo alcuni tag, ma fammi sapere se ci sono modi per accorciarlo senza ridurre le prestazioni.


4

181 151 caratteri - 1 (spiegazione) - 10 (no jQuery) = 140 punti

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

Alcuni caratteri in più possono essere salvati omettendo function(){e usando invece una stringa. Si noti inoltre che l'estrazione di proprietà comunemente utilizzate, ad esempio, c='childNodesci consente di fare z[c]invece di 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);

Immagino di poter fare meno punti usando jQuery e non attraversando le proprietà, ma vabbè.

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

Fondamentalmente questo trova l'ultimo elemento DOM sulla pagina e lo rimuove. Quindi continua a farlo per ogni 50 millisecondi, che ho trovato essere una velocità media piuttosto buona per vedere una pagina strappata da zero. È terapeutico, lo giuro.

Disclaimer: l'avevo fatto qualche tempo fa e ho deciso di condividerlo, dal momento che qui sembra appropriato. La fonte è nel mio repository GitHub .


Questo è fantastico! L'ho modificato per includere una versione più giocata che salva alcuni personaggi. Spero non ti dispiaccia. Funzionalmente identico.
Brigand,

@FakeRainBrigand Niente affatto, grazie! In effetti, mi hai aiutato a imparare alcuni nuovi trucchi interessanti, che era la mia intenzione originale durante la scrittura. Grazie ancora!
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;

Riceve ogni risposta alla domanda sotto forma di <code>javascript:(stuff)</code>ciò che non cambia la posizione e le esegue tutte.


Hmm ... Riesco a vedere un sacco di spazio bianco che sembra essere rimovibile. Forse dovresti rimuoverlo.
John Dvorak l'

3
Sono abbastanza sicuro che questo non rispetti la regola: "nessuna creazione di un tag script che tira esplosioneThisPage.js o simili". Inoltre, non funziona su tutte le pagine SO, solo questa. Inoltre, infligge danni reali a domande su XSS, quindi dovresti aggiungere 9e72 al tuo punteggio.
John Dvorak l'

2

Mi piace questo effetto. Fondamentalmente attiva un effetto slide per ogni div sul sito ogni 1 millisecondo.

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

Punto

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

Bello, ma funzionerebbe anche solo Google: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.