StackOverflow Explode (bookmarklet) [kapalı] yap


28

Bazen insanlar StackExchange ağında sinirlenirler (özellikle SO).

yığın akışı logosu değiştirildi

Göreviniz, StackOverflow'un bir şekilde patlamasına / çıkmasına / imha etmesine neden olan bir yer imi oluşturmaktır. Bu, hayal kırıklıklarımızı dağıtmanın daha iyi bir yolunu sağlayacaktır.

Kurallar:

  • bir kitapçık şeklinde olması gerekir
  • Chrome ve Firefox'ta çalışması gerekir (en son sürüm)
  • jQuery sitede, bu yüzden kullanabilirsiniz
  • explosionThisPage.js veya benzeri bir komut dosyası oluşturma

Puanlama, aşağıdakiler dışında, kopyalanması ve yapıştırılması gereken karakter sayısıdır:

  • Bir açıklama eklerseniz -1
  • Her bir oy için -5
  • -10 eğer jQuery kullanmıyorsanız
  • -10 patlama sesi çıkarırsa
  • + 9e72, siteye gerçekten zarar veriyorsa (F5 zararı onarmalıdır)

GIF rahatsız edici ise, çıkarın.


7
IMO şartnamesi, bir başvurunun yerine getirip getirmediğinin objektif olarak belirlenmesi için yeterince keskin değildir.
Peter Taylor

bir yorumda, benim olmadığı için: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
Benim yorumum puanlama sistemi ile ilgili değil, görev özellikleri hakkındaydı.
Peter Taylor

4
Gerçekten mi? Siteye zarar vermeyi gerçekten başarabiliyorsa eksi 9*10**72 puanlar almalı ve ardından kullanıcı sayfayı yeniden yüklediğinde onu onarmalıdır. Bu oldukça zor olurdu.
Blacklight Shining

2
@FakeRainBrigand IMO, yeniden yüklendikten sonra bir şekilde tamir edilen siteye zarar vermesine neden olmak, siteye zarar vermekten çok daha etkileyicidir.
Blacklight Shining

Yanıtlar:


27

Tavuk!

Puan: 46 - 1 (açıklama) - 5 * 17 (oy) = -40

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

Basitçe her elemanı çocuksuz alır ve onu metinle değiştirir 'chicken'.

Örnek ekran görüntüleri:
daha fazla tavuk
bu soruyu tavuklaştırdı

görüntü


Müthiş bir fikir :-) "Cevaplanmış tavuk" veya "tavuk olmayan" kelimelerin olduğu sayfa başlığı gibi şeyleri görmek de ilginç ... Neden?
Brigand

@FakeRainBrigand Huh? Sayfa başlığı benim için "tavuk" oldu ...
Doorknob

Daha uzun ama daha kapsamlı sürüm, kısmen javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
girişime göre

@Doorknob, tebrikler, en düşük puan olan 15 puanınız oldu (üzgünüm bir tanesini kabul etmem çok uzun sürdü). Yine yapabilseydim, yine de -15 değerinde bir oy kullanırdım.
Brigand

1
HODOR olmalıydı!
SztupY

27

İşte benim giriştim, ki bu sarhoş edici diyeceğim :

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 karakterde, muhtemelen herhangi bir golf ödülü kazanmayacak, ama bunun için fazla oylarla para kazanmayı umuyorum. :)

İşte aynı kurallara uymamak:

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

Yaptığı şey rastgele sayfadaki metni değiştirmek, bitişik karakterleri değiştirmek, karakterleri silmek veya çoğaltmak ya da klavyede bitişik karakterlerle değiştirmek. Etki ilk bakışta biraz belirsizdir, ancak bir süre çalışmasına izin verin; sayfa içeriği kaçınılmaz olarak sarhoş bir yazı karmaşasına dönüşür:

Eve git, SO, sarhoşsun!

Ps. Kod hiçbir şekilde SO'ya özgü değildir, bu nedenle jQuery kullanan herhangi bir web sitesinde çalışacaktır. Komik sonuçlar için Wikipedia'da deneyin . Bu fikir, yıllar önce yazdığım "99 şişe bira" yarışmasının yaratıcı bir yorumu olarak yazdığım bir şeye dayanıyor: Benim versiyonum, sonuncusu ancak tanınmayacak kadar yavaş yavaş artan sayıda yazım hatası verdi. Herhangi biri onu görmek isterse, işte orijinal Perl kodu .


6
Daha Dyslexinator (o ruqning esnada Sorru i typping ediyorum) Lide
TheDoctor

16

Bu neden beğenildi bilmiyorum, beğendim :)

Bu en kısa değil, ama bence güzel:

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

Açıklama: Umarım bu sayılır, bu betik siteyi patlamak yerine yerleştirir;) Bu sadece her 90ms'de rastgele bir div veya yayılma seçer ve yavaşça kapatır.


+1 ama random () tam ve kontrollü bir yok etme için etkili değil, yine de beğendim :)
Daniele Brugnara 17:13

Sadece URL penceresine attı ve hiçbir şey olmadı ,,,?
WallyWest,

Üzgünüz Wally, yorumunuzu görmedim. Yer imi olarak kaydetmeniz gerekir.
Fels

12

Çünkü yüksek veya düşük puan kazanırsa tanımlanmadı ...

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

Temel: 38
Bonis:

  • + 9e72 Kalıcı hasar.

Son puan: 9000000000000000000000000000000000000000000000000000000000000000000000000382

BT, denemedim.


1
haha Bu arada, JavaScript'i sorarsan: 9e72+38 === 9e72:-)
Brigand

3
Kim javascript ister? JQuery kullanın .
Johannes Kuhn


4
Err ... aşağı mı yukarı mı oy vereyim ...?
Kim

1
Oh, anlıyorum ... eğer kullanırsan "oy kullanma hakkı" sınıfındaki düğmeleri tıklıyor. Etiketlenmiş kod zorluğudur, yani en düşük puan kazanır.
Nzall

8

Benim kucağım 245 karakter.

Çoğunlukla kısa değil, ama hoşuma gidiyor ;-)

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: Açıklama:

  • Ben güzel sunulan animasyonlu gif imgesini kullanıyorum.
  • CSS'nin yardımıyla, onları% 60 opaklıkla sayfa üzerine tam sayfa olarak yerleştirdim.

:

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

Kendiliğinden çoğunlukla okunabilir ;-)

-10 JQuery yok

Alternatif:

Bir alternatif var:

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

Değiştirilmemiş GIF'e dayanarak, Wikimedia Commons'da bulundu : Dosya: Animasyonlu ateş by nevit.gif

Resim: Wikipedia'dan görüntü

Numune:

görüntü tanımını buraya girin


Bu harika!
Brigand

5

Tamam, bunun kriterleri karşılaması gerektiğini düşünüyorum:

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

Geçerli sayfayı "Patlatıldı" ile değiştirir

Puan: 46
-1 Açıklama
-10 jQuery yok

35


5

Bu zevkli ve biraz da gecikmeye neden oluyor: D

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

Sadece tüm basamak dizelerini 0 ile 100 arasında rasgele bir sayı ile değiştiren bir aralık belirler. Saniyede iki kez. Beklediğiniz gibi bir sürü hata oluşturur ve resim URL'leri değiştirildiğinde tüm 404'leri durdurabilmek için düzeltebilirim, ancak bence bu daha eğlenceli ve kod golfü. : D

Gol:

  • 132 baz
  • -1 açıklama
  • -5 oy ver
  • -10 hayır jQuery

Toplam puan: 116


Firefox'ta çalışmıyor.
Johannes Kuhn

@JohannesKuhn FF'de ne işe yarıyor? Chrome'da çalışır
Doorknob

Sayı içeren boş bir sayfa görüntüler.
Johannes Kuhn

@JohannesKuhn Sanırım tamir ettim; yok function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)artık sizin için çalışacak?
Doorknob

Evet, ama ;sonunda bir bekar aynısını yapardı.
Johannes Kuhn

4

165 karakter (164 puan)

Açıklama için -1

İşte benim denemem. Çok kısa değil, ama eğlenceli.

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

Sayfadaki öğeleri tek tek rasgele yönlere kaydırır. Özellikle sözdizimi vurgulaması nedeniyle yayılma dahil ettim (her rengin ayrı bir yayılımı var).

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

Elbette bazı etiketlerin kaldırılmasıyla kısaltılabilir, ancak performansı düşürmeden kısaltmanın bir yolu olup olmadığını bana bildirin.


4

181 151 karakter - 1 (açıklama) - 10 (jQuery yok) = 140 puan

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

Bunun function(){yerine bir dize atlanarak ve kullanılarak birkaç karakter daha saklanabilir . Ayrıca örneğin yaygın olarak kullanılan özelliklerinin çıkarma not c='childNodesyapmamızı sağlar z[c]yerine 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);

Sanırım jQuery kullanarak daha az puan alabilirim ve traversing özelliklerini değil, ama oh peki.

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

Temelde bu sayfadaki en son DOM öğesini bulur ve kaldırır. Ardından, her 50 milisaniyede bunu yapmaya devam ediyor, ki bu da bir sayfanın sıfırdan yukarıya çekildiğini görmek için ortalama bir nezaket hızı. Terapatik, yemin ederim.

Yasal Uyarı: Bunu bir süre önce yapmıştım ve burada uygun göründüğü için paylaşmaya karar verdim. Kaynak GitHub depomda .


Bu harika! Birkaç karakter kaydeder daha golf versiyonunu içerecek şekilde düzenledim. Umarım sakıncası yoktur. İşlevsel olarak aynı.
Brigand

@FakeRainBrigand Hiç de değil, teşekkürler! Aslında, yazarken asıl amacım olan yeni bazı harika püf noktaları öğrenmeme yardım ettiniz. Tekrar teşekkürler!
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;

Bu soruya verilen yanıtı <code>javascript:(stuff)</code>, yerini değiştirmez ve hepsini yönetir.


Hmm ... Çıkarılabilir görünen çok fazla boşluk görebiliyorum. Belki de kaldırmalısın.
John Dvorak

3
Bunun kuralı çözemeyeceğinden eminim: "no, explosionThisPage.js veya benzerlerini çeken bir komut dosyası etiketi oluşturmadan". Ayrıca, her SO sayfasında çalışmaz, sadece bu sayfada. Ayrıca, XSS hakkında sorulan sorulara gerçek zarar verir, bu nedenle puanınıza 9e72 eklemelisiniz.
John Dvorak

2

Bu etkiden hoşlanıyorum. Temel olarak, sitedeki her dalış için her 1 milisaniyede bir slayt efekti değiştirir.

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

Gol

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

Güzel, ama sadece Google'da da işe yarayacak:javascript:setInterval(function(){$('div').toggle(88)},1)
Fels
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.