Jadikan StackOverflow Explode (bookmarklet) [ditutup]

28

Terkadang orang frustrasi di jaringan StackExchange (khususnya SO).

logo stackoverflow dimodifikasi

Tugas Anda adalah membuat bookmarklet yang menyebabkan StackOverflow meledak / meledak / dihancurkan dengan cara tertentu. Ini akan memberikan cara yang lebih baik untuk menghilangkan rasa frustrasi kita.

Aturan:

  • itu harus dalam bentuk bookmarklet
  • harus bekerja di Chrome dan Firefox (stable terbaru)
  • jQuery ada di situs, sehingga Anda dapat menggunakannya
  • tidak ada membuat tag skrip yang menarik ledakanThisPage.js atau serupa

Penilaian adalah jumlah karakter yang perlu disalin dan ditempelkan, kecuali:

  • -1 jika Anda menyertakan penjelasan
  • -5 untuk setiap upvote
  • -10 jika Anda tidak menggunakan jQuery
  • -10 jika itu membuat suara ledakan
  • + 9e72 jika itu benar-benar membahayakan situs (F5 harus memperbaiki kerusakan)

Jika gif mengganggu, keluarkan.

Perampok
sumber
7
IMO spec tidak cukup tajam untuk penentuan obyektif apakah suatu proposal memenuhi atau tidak.
Peter Taylor
dalam komentar, karena itu bukan milik saya: 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
Komentar saya bukan tentang sistem penilaian tetapi tentang spesifikasi tugas.
Peter Taylor
4
Sangat? Itu harus menjadi poin minus 9*10**72 jika itu benar-benar berhasil menyebabkan kerusakan pada situs, dan kemudian memperbaikinya ketika pengguna memuat ulang halaman. Itu akan menjadi suatu prestasi.
Blacklight Shining
2
@FakeRainBrigand IMO, menyebabkan kerusakan nyata pada situs yang entah bagaimana diperbaiki saat memuat ulang jauh lebih mengesankan daripada hanya menyebabkan kerusakan pada situs.
Blacklight Shining

Jawaban:

27

Ayam!

Nilai: 46 - 1 (penjelasan) - 5 * 17 (suara) = -40

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

Ini hanya mengambil setiap elemen tanpa anak dan menggantinya dengan teks 'chicken'.

Contoh tangkapan layar:
lebih banyak ayam
, pertanyaan ini diperkuat

gambar

Gagang pintu
sumber
Ide yang luar biasa :-) Ini juga menarik untuk melihat hal-hal seperti "ayam yang dijawab" atau judul halaman, yang memiliki kata-kata non-ayam ... Mengapa?
Brigand
@FakeRainBrigand Hah? Judul halaman menjadi "ayam" bagi saya ...
Gagang Pintu
Versi yang lebih panjang tetapi lebih menyeluruh, sebagian berdasarkan pada entri saya:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen
@ Doorknob, selamat, Anda mendapat skor 15, yang merupakan yang terendah (maaf saya butuh waktu lama untuk menerima satu). Namun, jika saya bisa mengulanginya lagi, saya akan memberikan suara senilai -15.
Brigand
1
Seharusnya HODOR!
SztupY
27

Inilah entri saya, yang akan saya panggil pemabuk :

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

Pada 474 karakter, itu mungkin tidak akan memenangkan hadiah golf, tapi saya berharap untuk menebusnya dengan upvotes. :)

Berikut kode yang sama yang tidak dikaburkan:

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

Apa yang dilakukan adalah secara acak mengubah teks pada halaman, bertukar karakter yang berdekatan, menghapus atau menggandakan karakter atau menggantinya dengan yang berdekatan dengan mereka pada keyboard. Efeknya agak halus pada awalnya, tetapi biarkan itu berjalan sebentar, dan konten halaman pasti akan membusuk menjadi berantakan mengetik mabuk:

Pulanglah, SO, kau mabuk!

Ps. Kode ini tidak spesifik untuk SO, jadi kode ini akan berfungsi pada situs web apa pun yang menggunakan jQuery. Cobalah di Wikipedia untuk hasil yang lucu. Gagasan ini didasarkan pada sesuatu yang saya tulis bertahun-tahun yang lalu sebagai interpretasi kreatif dari tantangan "99 botol bir": versi saya secara perlahan meningkatkan jumlah kesalahan ketik pada setiap ayat, sampai yang terakhir tidak dapat dikenali. Jika ada yang ingin melihatnya, inilah kode Perl asli .

Ilmari Karonen
sumber
6
Lebih lanjut letakkan Dyslexinator (sorru, saya mengetik saat ini sedang ruqning)
TheDoctor
16

Saya tidak tahu mengapa ini diturunkan, saya suka :)

Ini bukan yang terpendek, tapi saya pikir itu cantik:

133 karakter -1

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

Tidak Terkumpul:

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

Penjelasan: Saya harap ini diperhitungkan, skrip ini menanamkan situs alih-alih meledakkannya;) Ini hanya mengambil div acak atau span setiap 90ms dan menutupnya perlahan-lahan ..

Fels
sumber
+1 tetapi acak () tidak efisien untuk penghancuran penuh dan terkontrol, toh saya menyukainya :)
Daniele Brugnara
Hanya melemparkannya ke jendela URL, dan tidak ada yang terjadi ,,,?
WallyWest
Maaf Wally, tidak melihat komentar Anda. Anda harus menyimpannya sebagai bookmark.
Fels
12

Karena itu tidak ditentukan jika skor yang lebih tinggi atau lebih rendah ...

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

Basis: 38
Bonis:

  • + 9e72 Kerusakan permanen.

Skor akhir: 9000000000000000000000000000000000000000000000000000000000000000000000000000038

Btw, saya tidak mencobanya.

Johannes Kuhn
sumber
1
haha Omong-omong, jika Anda bertanya JavaScript: 9e72+38 === 9e72:-)
Brigand
3
Siapa yang meminta javascript? Gunakan jQuery .
Johannes Kuhn
16
i.stack.imgur.com/sGhaO.gif : D
Doorknob
4
Err ... haruskah saya memilih turun atau naik ...?
Teman Kim
1
Oh, saya mengerti ... itu mengklik tombol dengan kelas "pilih-turun" jika Anda menggunakannya. Ini diberi kode-tantangan, yang menyiratkan bahwa skor terendah menang.
Nzall
8

245 anak anjing saya.

Sebagian besar bukan yang lebih pendek, tapi saya suka ;-)

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

  • Saya menggunakan gambar animasi gif bagus yang ditawarkan dari pertanyaan,
  • Dengan bantuan CSS, saya menempatkannya di halaman penuh, dengan opacity 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%;
');

Kebanyakan bisa dibaca sendiri ;-)

-10 Tidak Ada JQuery

Alternatif:

Ada alternatifnya:

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

Berdasarkan GIF yang tidak dimodifikasi, ditemukan di Wikimedia Commons: File: Animated fire oleh nevit.gif

Gambar: Gambar dari Wikipedia

Mencicipi:

masukkan deskripsi gambar di sini

F. Hauri
sumber
Itu luar biasa!
Brigand
5

Ok, saya pikir ini harus memperhatikan kriteria:

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

Ganti halaman saat ini dengan "Meledak"

Nilai: 46
-1 Penjelasan
-10 Tidak jQuery

35

Johannes Kuhn
sumber
5

Yang ini menyenangkan, dan menyebabkan sedikit lag juga: D

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

Itu hanya menetapkan interval yang menggantikan semua string digit dengan angka acak dari 0 hingga 100. Dua kali per detik. Ini menciptakan banyak kesalahan, seperti yang Anda harapkan, dan saya bisa memperbaikinya untuk menghentikan semua 404 ketika URL gambar diubah, tapi saya pikir ini lebih menyenangkan dengan cara ini dan itu kode golf. : D

Skor:

  • 132 dasar
  • -1 penjelasan
  • -5 Suara positif
  • -10 tidak ada jQuery

Total skor: 116

Gagang pintu
sumber
Tidak berfungsi di firefox.
Johannes Kuhn
@JohannesKuhn Apa fungsinya di FF? Ini bekerja di Chrome
Doorknob
Menampilkan halaman kosong dengan nomor.
Johannes Kuhn
@JohannesKuhn saya pikir saya memperbaikinya; apakah itu function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)bekerja untuk Anda sekarang?
Gagang Pintu
Ya, tetapi satu ;pada akhirnya akan melakukan hal yang sama.
Johannes Kuhn
4

165 karakter (164 poin)

-1 untuk penjelasan

Inilah usaha saya. Ini tidak terlalu pendek, tetapi menyenangkan.

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

Ini slide elemen individual dari halaman dalam arah acak. Saya secara khusus menyertakan rentang karena penyorotan sintaks (setiap warna memiliki rentang terpisah).

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

Tentu saja dapat dipersingkat dengan menghapus beberapa tag, tetapi beri tahu saya jika ada cara untuk mempersingkatnya tanpa mengurangi kinerja.

Perampok
sumber
4

181 151 karakter - 1 (penjelasan) - 10 (tanpa jQuery) = 140 poin

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

Beberapa karakter lagi dapat disimpan dengan menghilangkan function(){dan menggunakan string sebagai gantinya. Perhatikan juga ekstraksi properti yang umum digunakan, misalnya, c='childNodesmemungkinkan kita melakukan z[c]alih - alih 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);

Saya kira saya bisa membuat lebih sedikit poin dengan menggunakan jQuery dan tidak melintasi properti, tapi oh well.

Tidak Terkumpul:

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

Pada dasarnya ini menemukan elemen DOM terbaru pada halaman dan menghapusnya. Lalu terus lakukan itu untuk setiap 50 milidetik, yang menurut saya merupakan kecepatan rata-rata yang bagus untuk melihat halaman yang terkoyak dari bawah ke atas. Itu terapi, aku bersumpah.

Penafian: Saya telah membuat ini beberapa waktu yang lalu dan memutuskan untuk membagikannya, karena sepertinya cocok di sini. Sumbernya ada di repositori GitHub saya .

Alfa
sumber
Ini bagus! Saya mengeditnya untuk memasukkan versi lebih golf yang menyimpan beberapa karakter. Saya harap kamu tidak keberatan. Secara fungsional identik.
Brigand
@FakeRainBrigand Tidak sama sekali, terima kasih! Bahkan, Anda membantu saya mempelajari beberapa trik keren baru, yang merupakan niat awal saya ketika menulisnya. Terima kasih lagi!
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;

Itu mendapat setiap tanggapan terhadap pertanyaan dalam bentuk <code>javascript:(stuff)</code>yang tidak mengubah lokasi, dan menjalankan semuanya.

Kuilin Li
sumber
Hmm ... Saya bisa melihat banyak spasi yang tampaknya bisa dilepas. Mungkin Anda harus menghapusnya.
John Dvorak
3
Saya cukup yakin ini gagal aturan: "tidak membuat tag skrip yang menarik explosionPage.js atau serupa". Juga, ini tidak berfungsi pada setiap halaman SO, hanya yang ini. Juga, itu benar-benar merusak pertanyaan yang bertanya tentang XSS, jadi Anda harus menambahkan 9e72 ke skor Anda.
John Dvorak
2

Saya suka efek ini. Ini pada dasarnya mengaktifkan efek slide untuk setiap div di situs setiap 1 milidetik.

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

Skor

56
-1 Explanation
--------------
55 Total
Dan Grahn
sumber
Bagus, tetapi hanya toogle akan bekerja juga: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels