StackOverflow explodieren lassen (Lesezeichen) [geschlossen]

28

Manchmal sind die Leute im StackExchange-Netzwerk frustriert (speziell SO).

Stackoverflow-Logo geändert

Ihre Aufgabe ist es, ein Lesezeichen zu erstellen, das StackOverflow in irgendeiner Weise explodieren / implodieren / zerstören lässt. Dies wird eine bessere Möglichkeit bieten, unsere Frustrationen zu zerstreuen.

Die Regeln:

  • Es muss in Form eines Lesezeichens vorliegen
  • muss in Chrome und Firefox funktionieren (neueste stabile Version)
  • jQuery befindet sich auf der Site, sodass Sie es verwenden können
  • Kein Erstellen eines Skript-Tags, das explosionThisPage.js oder ähnliches abruft

Bewertung ist die Anzahl der Zeichen, die kopiert und eingefügt werden müssen, mit Ausnahme von:

  • -1 wenn Sie eine Erklärung hinzufügen
  • -5 für jede positive Bewertung
  • -10 Wenn Sie jQuery nicht verwenden
  • -10 wenn es eine Explosion gibt
  • + 9e72 wenn es der Seite tatsächlich schadet (F5 sollte den Schaden reparieren)

Wenn das GIF ablenkt, entfernen Sie es.

Räuber
quelle
7
IMO ist die Spezifikation nicht scharf genug, um objektiv zu bestimmen, ob eine Einreichung sie erfüllt.
Peter Taylor
in einem Kommentar, da es nicht meins ist: 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
Mein Kommentar betraf nicht das Bewertungssystem, sondern die Aufgabenspezifikation.
Peter Taylor
4
"Ja wirklich?" Das sollten Minuspunkte sein, 9*10**72 wenn es tatsächlich gelingt, der Site Schaden zuzufügen und diese dann zu reparieren, wenn der Benutzer die Seite neu lädt. Das wäre eine ziemliche Leistung.
Blacklight Shining
2
@FakeRainBrigand IMO: Es ist weitaus eindrucksvoller, der Site einen echten Schaden zuzufügen, der beim Neuladen irgendwie repariert wird, als der Site einfach Schaden zuzufügen.
Blacklight Shining

Antworten:

27

Hähnchen!

Punktzahl: 46 - 1 (Erklärung) - 5 * 17 (Stimmen) = -40

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

Es nimmt einfach jedes Element ohne untergeordnete Elemente und ersetzt es durch den Text 'chicken'.

Beispiel-Screenshots:
Mehr Huhn
diese Frage Huhn

Bild

Türknauf
quelle
Tolle Idee :-) Interessant ist es auch, Dinge wie "beantwortetes Huhn" oder den Seitentitel zu sehen, die keine Huhn-Wörter enthalten ... Warum?
Brigand
@FakeRainBrigand Huh? Der Seitentitel wird für mich zu "Huhn" ...
Türklinke
Längere aber gründlichere Fassung, teilweise basierend auf meinem Eintrag:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen
@Doorknob, herzlichen Glückwunsch, Sie hatten eine Punktzahl von 15, was die niedrigste war (sorry, es hat so lange gedauert, bis ich eine akzeptierte). Wenn ich es aber noch einmal machen könnte, würde ich eine Stimme im Wert von -15 abgeben.
Brigand
1
Hätte HODOR sein sollen!
SztupY
27

Hier ist mein Eintrag, den ich den Betrunkenen nennen werde :

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

Bei 474 Chars wird es wahrscheinlich keine Golfpreise gewinnen, aber ich hoffe, dass ich das in Upvotes wieder gutmachen kann. :)

Hier ist der gleiche Code enttarnt:

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

Dabei wird der Text auf der Seite zufällig mutiert, benachbarte Zeichen ausgetauscht, Zeichen gelöscht oder dupliziert oder durch benachbarte Zeichen auf der Tastatur ersetzt. Der Effekt ist anfangs etwas subtil, lässt ihn aber eine Weile laufen, und der Seiteninhalt wird unweigerlich in ein Chaos von betrunkener Eingabe zerfallen:

Geh nach Hause, SO, du bist betrunken!

Ps. Der Code ist in keiner Weise SO-spezifisch, daher funktioniert er auf jeder Website, die jQuery verwendet. Probieren Sie es auf Wikipedia für lustige Ergebnisse. Die Idee basiert auf etwas, das ich vor Jahren als kreative Interpretation der "99 Flaschen Bier" -Herausforderung geschrieben habe: Meine Version führte eine langsam zunehmende Anzahl von Tippfehlern in jeden Vers ein, bis die letzten so gut wie nicht wiederzuerkennen waren. Wenn jemand es sehen möchte, ist hier der ursprüngliche Perl-Code .

Ilmari Karonen
quelle
6
Weitere Lide der Legastheniker (Sorru, ich bin Typping, während es ruqning)
TheDoctor
16

Ich weiß nicht, warum dies abgelehnt wurde, ich mag es :)

Dies ist nicht die kürzeste, aber ich finde sie hübsch:

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

Erläuterung: Ich hoffe, dies zählt, dieses Skript implodiert die Site, anstatt sie zu explodieren. Dies wählt nur alle 90 ms eine zufällige Div oder Span und schließt sie langsam.

Fels
quelle
+1, aber das random () ist nicht effizient für eine vollständige und kontrollierte Zerstörung, trotzdem mag ich es :)
Daniele Brugnara
Warf es einfach in das URL-Fenster, und nichts ist passiert ,,,?
WallyWest
Sorry Wally, habe deinen Kommentar nicht gesehen. Sie müssen es als Lesezeichen speichern.
Fels
12

Weil es nicht definiert wurde, ob die höhere oder niedrigere Punktzahl gewinnt ...

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

Basis: 38
Bonis:

  • + 9e72 Permanenter Schaden.

Endergebnis: 9000000000000000000000000000000000000000000000000000000000000000000000038

Übrigens habe ich es nicht ausprobiert.

Johannes Kuhn
quelle
1
haha Übrigens, wenn Sie JavaScript fragen: 9e72+38 === 9e72:-)
Brigand
3
Wer fragt nach Javascript? Verwenden Sie jQuery .
Johannes Kuhn
16
i.stack.imgur.com/sGhaO.gif : D
Türknauf
4
Ähm ... soll ich runter oder rauf stimmen ...?
Freund von Kim
1
Oh, ich verstehe ... es klickt auf die Schaltflächen mit der Klasse "Abwahl", wenn Sie es verwenden. Es ist mit Code-Challenge-Tags versehen, was bedeutet, dass die niedrigste Punktzahl gewinnt.
Nzall
8

Meine Wahl fiel auf 245 Zeichen.

Meistens nicht die kürzere, aber ich mag es ;-)

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: Erklärung:

  • Ich benutze das nett angebotene animierte gif bild aus frage,
  • Mit Hilfe von CSS habe ich sie mit einer Deckkraft von 60% ganzseitig über die Seite gelegt.

:

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

Meistens für sich allein lesbar ;-)

-10 Keine JQuery

Alternative:

Es gibt eine Alternative:

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

Basierend auf unmodifiziertem GIF, zu finden bei Wikimedia Commons: File: Animated fire von nevit.gif

Bild: Bild aus Wikipedia

Probe:

Bildbeschreibung hier eingeben

F. Hauri
quelle
Das ist großartig!
Brigand
5

Ok, ich denke das sollte die Kriterien erfüllen:

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

Ersetzt die aktuelle Seite durch "Exploded"


Prüfungsergebnis : 46 -1 Explaination
-10 No jQuery

35

Johannes Kuhn
quelle
5

Das macht Spaß und verursacht auch einiges an Verzögerung: D

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

Es wird lediglich ein Intervall festgelegt, in dem alle Ziffernfolgen durch eine Zufallszahl von 0 bis 100 ersetzt werden. Zweimal pro Sekunde. Es verursacht eine Reihe von Fehlern, wie Sie vielleicht erwarten, und ich könnte es beheben, um alle 404-Dateien zu stoppen, wenn Bild-URLs geändert werden, aber ich denke, es macht mehr Spaß auf diese Weise und es ist Code-Golf. : D

Ergebnis:

  • 132 base
  • -1 Erklärung
  • -5 upvote
  • -10 no jQuery

Gesamtpunktzahl: 116

Türknauf
quelle
Funktioniert nicht in Firefox.
Johannes Kuhn
@JohannesKuhn Was macht es in FF? Es funktioniert in Chrome
Doorknob
Zeigt eine leere Seite mit einer Nummer an.
Johannes Kuhn
@JohannesKuhn Ich glaube, ich habe es behoben; arbeitet function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)jetzt für dich
Türklinke
Ja, aber eine Single ;am Ende würde dasselbe tun.
Johannes Kuhn
4

165 Zeichen (164 Punkte)

-1 zur Erklärung

Hier ist mein Versuch. Es ist nicht besonders kurz, aber es macht Spaß.

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

Es verschiebt einzelne Elemente in zufälliger Richtung von der Seite. Ich habe die Spanne wegen der Syntaxhervorhebung speziell eingefügt (jede Farbe hat eine eigene Spanne).

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

Es könnte natürlich durch Entfernen einiger Tags gekürzt werden, aber lassen Sie mich wissen, ob es Möglichkeiten gibt, es zu verkürzen, ohne die Leistung zu beeinträchtigen.

Räuber
quelle
4

181 151 Zeichen - 1 (Erklärung) - 10 (keine jQuery) = 140 Punkte

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

Sie können einige weitere Zeichen speichern, indem Sie die function(){Zeichenfolge weglassen und stattdessen eine Zeichenfolge verwenden. Beachten Sie auch die Extraktion häufig verwendeter Eigenschaften, c='childNodesdie wir beispielsweise z[c]anstelle von tun können 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);

Ich denke, ich könnte weniger Punkte erzielen, wenn ich jQuery verwende und keine Eigenschaften überquere, aber na ja.

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

Grundsätzlich findet dies das neueste DOM-Element auf der Seite und entfernt es. Dann mache ich das alle 50 Millisekunden, was für mich eine durchschnittliche Geschwindigkeit ist, um zu sehen, wie eine Seite von Grund auf zerrissen wird. Es ist therapeutisch, ich schwöre es.

Haftungsausschluss: Ich hatte dies vor einiger Zeit gemacht und beschlossen, es zu teilen, da es hier angemessen erscheint. Die Quelle befindet sich in meinem GitHub-Repository .

Alpha
quelle
Das ist toll! Ich habe es so bearbeitet, dass es eine stärker golfende Version enthält, die einige Zeichen speichert. Ich hoffe es macht dir nichts aus. Es ist funktional identisch.
Brigand
@FakeRainBrigand Überhaupt nicht, danke! Tatsächlich hast du mir geholfen, ein paar neue coole Tricks zu lernen, was meine ursprüngliche Absicht beim Schreiben war. Danke noch einmal!
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;

Es erhält jede Antwort auf die Frage in der Form, <code>javascript:(stuff)</code>dass sich der Speicherort nicht ändert, und führt alle aus.

Kuilin Li
quelle
Hmm ... Ich kann viele Leerzeichen sehen, die entfernbar zu sein scheinen. Vielleicht solltest du es entfernen.
John Dvorak
3
Ich bin mir ziemlich sicher, dass dies die Regel nicht erfüllt: "Kein Skript-Tag erstellen, das explosionThisPage.js oder ähnliches abruft". Außerdem funktioniert es nicht auf jeder SO-Seite, sondern nur auf dieser. Außerdem fügt es bei Fragen zu XSS echten Schaden zu, sodass Sie 9e72 zu Ihrer Punktzahl hinzufügen sollten.
John Dvorak
2

Ich mag diesen Effekt. Grundsätzlich wird alle 1 Millisekunde ein Dia-Effekt für jeden Div auf der Site umgeschaltet.

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

Ergebnis

56
-1 Explanation
--------------
55 Total
Dan Grahn
quelle
Schön, aber nur toogle würde auch funktionieren: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels