ทำ StackOverflow Explode (bookmarklet) [ปิด]


28

บางครั้งผู้คนผิดหวังในเครือข่าย StackExchange (โดยเฉพาะ SO)

แก้ไขโลโก้สแต็คโอเวอร์โฟลว์แล้ว

งานของคุณคือสร้าง bookmarklet ที่ทำให้ StackOverflow ทำการระเบิด / implode / destroy ในบางแบบ นี่จะเป็นวิธีที่ดีกว่าในการกระจายความผิดหวังของเรา

กฎระเบียบ:

  • มันจะต้องอยู่ในรูปแบบของ bookmarklet
  • ต้องทำงานใน Chrome และ Firefox (เสถียรล่าสุด)
  • jQuery อยู่ในเว็บไซต์เพื่อให้คุณสามารถใช้งานได้
  • ไม่มีการสร้างแท็กสคริปต์ที่ดึง explosionThisPage.js หรือคล้ายกัน

การให้คะแนนคือจำนวนอักขระที่ต้องคัดลอกและวางยกเว้น:

  • -1 ถ้าคุณมีคำอธิบาย
  • -5 สำหรับการโหวตแต่ละครั้ง
  • -10 ถ้าคุณไม่ได้ใช้ jQuery
  • -10 ถ้ามันทำให้เกิดเสียงระเบิด
  • +9e72 ถ้ามันเป็นอันตรายต่อเว็บไซต์ (F5 ควรซ่อมแซมความเสียหาย)

หากเบี่ยงเบนความสนใจของ GIF ให้ลบออก


7
IMO ข้อมูลจำเพาะไม่คมชัดเพียงพอสำหรับการพิจารณาว่ามีการส่งข้อมูลตรงตามนั้นหรือไม่
Peter Taylor

ในความคิดเห็นเนื่องจากไม่ใช่ของฉัน: 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
ความคิดเห็นของฉันไม่ได้เกี่ยวกับระบบการให้คะแนน แต่เกี่ยวกับข้อกำหนดของงาน
Peter Taylor

4
จริงๆ? ซึ่งควรเป็นลบด้วย 9*10**72คะแนนหากจริง ๆ แล้วจัดการก่อให้เกิดอันตรายต่อไซต์และจากนั้นซ่อมแซมเมื่อผู้ใช้โหลดหน้าซ้ำ นั่นคงเป็นความสำเร็จ
แบล็กไลท์ส่องแสง

2
@FakeRainBrigand IMO ซึ่งก่อให้เกิดความเสียหายอย่างแท้จริงต่อไซต์ที่ได้รับการซ่อมแซมเมื่อโหลดใหม่นั้นมีความน่าประทับใจมากกว่าการสร้างความเสียหายต่อไซต์
แบล็กไลท์ส่องแสง

คำตอบ:


27

ไก่!

คะแนน: 46 - 1 (คำอธิบาย) - 5 * 17 (คะแนนโหวต) = -40

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

'chicken'มันก็จะใช้เวลาทุกองค์ประกอบที่มีเด็กไม่มีและแทนที่ด้วยข้อความ

สกรีนช็อตตัวอย่าง:
ไก่มากกว่าคำถามนี้ทำให้ไก่
โตขึ้น

image


แนวคิดที่ยอดเยี่ยม :-) มันน่าสนใจที่จะเห็นสิ่งต่าง ๆ เช่น "ไก่ตอบ" หรือชื่อหน้าซึ่งมีคำที่ไม่ใช่ไก่ ... ทำไม?
Brigand

@FakeRainBrigand หือ? ชื่อหน้าจะกลายเป็น "ไก่" สำหรับฉัน ...
Doorknob

รุ่นที่ยาวกว่า แต่ถี่ถ้วนยิ่งขึ้นบางส่วนขึ้นอยู่กับการบันทึกของฉัน:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen

@Doorknob ขอแสดงความยินดีคุณมีคะแนน 15 ซึ่งต่ำที่สุด (ขออภัยที่ใช้เวลานานกว่าจะยอมรับได้) ถ้าฉันสามารถทำมันได้อีกครั้งฉันจะลงคะแนนให้ -15
Brigand

1
น่าจะเป็น HODOR!
SztupY

27

นี่คือรายการของฉันซึ่งฉันจะเรียกผู้เมาเหล้า :

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 ตัวอักษรมันอาจจะไม่ชนะรางวัลกอล์ฟ แต่ฉันหวังว่าจะทำมันให้ได้ในการโหวต :)

นี่คือรหัสเดียวกันที่ทำให้งงงวย:

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

สิ่งที่มันคือการกลายพันธุ์ข้อความในหน้าสุ่มแลกเปลี่ยนตัวละครที่อยู่ติดกันการลบหรือการทำซ้ำตัวอักษรหรือแทนที่พวกเขาด้วยคนที่อยู่ติดกับพวกเขาบนแป้นพิมพ์ ในตอนแรกเอฟเฟกต์นั้นบอบบาง แต่ก็ปล่อยให้มันทำงานชั่วขณะหนึ่งและเนื้อหาของหน้าจะสลายไปอย่างไม่น่าเชื่อในการพิมพ์เมาเหล้า:

Go home, SO, you're drunk!

ps รหัสไม่ได้อยู่ในลักษณะเฉพาะ SO ดังนั้นมันจะทำงานบนเว็บไซต์ใด ๆ ที่ใช้ jQuery ลองใช้วิกิพีเดียเพื่อผลลัพธ์ที่เฮฮา แนวคิดนี้มีพื้นฐานมาจากสิ่งที่ฉันเขียนเมื่อหลายปีก่อนในฐานะการตีความเชิงสร้างสรรค์ของการท้าทาย "99 ขวดเบียร์": รุ่นของฉันได้เพิ่มจำนวนของการสะกดผิดที่เพิ่มขึ้นอย่างช้า ๆ ในแต่ละบทกวีจนกระทั่งบทสุดท้าย หากใครต้องการที่จะเห็นมันนี่เป็นรหัส Perl เดิม


6
เพิ่มเติม LIDE Dyslexinator (sorru ฉัน typping ในขณะที่มัน ruqning)
TheDoctor

16

ฉันไม่รู้ว่าทำไมสิ่งนี้จึงถูก downvote ฉันชอบ :)

นี่ไม่ใช่สั้นที่สุด แต่ฉันคิดว่ามันสวย:

133 ตัวอักษร -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);
}());

คำอธิบาย: ฉันหวังว่าสิ่งนี้จะนับสคริปต์นี้ implodes เว็บไซต์แทนการระเบิดมัน) เพียงแค่เลือก div แบบสุ่มหรือขยายทุก 90ms และปิดมันช้า ..


+1 แต่การสุ่ม () ไม่มีประสิทธิภาพสำหรับการทำลายเต็มรูปแบบและการควบคุม แต่ฉันก็ชอบ :)
Daniele Brugnara

เพิ่งโยนมันเข้าไปในหน้าต่าง URL และไม่มีอะไรเกิดขึ้น ,,,
WallyWest

ขออภัยเก่งไม่เห็นความคิดเห็นของคุณ คุณต้องบันทึกเป็นบุ๊คมาร์ค
Fels

12

เพราะมันไม่ได้ถูกกำหนดถ้าคะแนนสูงหรือต่ำกว่าชนะ ...

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

ฐาน: 38
Bonis:

  • +9e72 ดาเมจถาวร

คะแนนสุดท้าย: 90000000000000000000000000000000000000000000000000000000000000000000000000038

Btw ฉันไม่ได้ลอง


1
ฮ่าฮ่าถ้าคุณถาม JavaScript: 9e72+38 === 9e72:-)
Brigand

3
ใครที่ถามจาวาสคริปต์? ใช้jQuery
Johannes Kuhn


4
เอ่อ ... ฉันควรลงคะแนนหรือเพิ่มขึ้น ... ?
เพื่อนของคิม

1
โอ้ฉันเข้าใจแล้ว ... มันคลิกปุ่มที่มีระดับ "การลงคะแนนเสียง" หากคุณใช้คลาสนี้ มันติดแท็กด้วยรหัสท้าทายซึ่งบอกว่าคะแนนต่ำสุดชนะ
Nzall

8

pupose ของฉัน 245 ตัวอักษร

ส่วนใหญ่ไม่สั้นกว่า แต่ฉันชอบมัน ;-)

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: คำอธิบาย:

  • ฉันใช้ภาพ gif เคลื่อนไหวที่ดีจากคำถาม
  • ด้วยความช่วยเหลือของ CSS ฉันวางมันลงบนหน้าเต็มหน้าด้วยความทึบ 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%;
');

ส่วนใหญ่อ่านได้เอง ;-)

-10 ไม่มี JQuery

ทางเลือก:

มีทางเลือกคือ:

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

จากข้อมูล GIF ที่ไม่ผ่านการแก้ไขพบได้ที่Wikimedia Commons: ไฟล์: Animated fire โดย nevit.gif

ภาพ: ภาพจาก Wikipedia

ตัวอย่าง:

ป้อนคำอธิบายรูปภาพที่นี่


ที่น่ากลัว!
Brigand

5

ตกลงฉันคิดว่าสิ่งนี้ควรทำตามเกณฑ์:

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

แทนที่หน้าปัจจุบันด้วย "Exploded"

คะแนน: 46
-1 คำอธิบาย
-10 ไม่มี jQuery

35


5

คนนี้สนุกและทำให้ค่อนข้างล่าช้าเช่นกัน: D

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

มันเพิ่งตั้งช่วงเวลาที่แทนที่สตริงของตัวเลขทั้งหมดด้วยตัวเลขสุ่มจาก 0 ถึง 100 สองครั้งต่อวินาที มันสร้างข้อผิดพลาดมากมายอย่างที่คุณคาดหวังและฉันสามารถแก้ไขให้หยุด 404 วินาทีทั้งหมดเมื่อ URL ของภาพเปลี่ยนไป แต่ฉันคิดว่ามันสนุกกว่านี้ด้วยวิธีนี้และเป็นโค้ดกอล์ฟ : D

คะแนน:

  • 132 ฐาน
  • -1 คำอธิบาย
  • -5 upvote
  • -10 ไม่มี jQuery

คะแนนรวม: 116


ไม่ทำงานใน firefox
โยฮันน์คุห์น

@JohannesKuhn มันทำอะไรใน FF? ใช้งานได้ใน Chrome
Doorknob

แสดงหน้าว่างที่มีตัวเลข
Johannes Kuhn

@JohannesKuhn ฉันคิดว่าฉันซ่อมมันแล้ว ไม่function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)ทำงานสำหรับคุณตอนนี้หรือไม่
Doorknob

ใช่ แต่หนึ่ง;ในตอนท้ายจะทำเช่นเดียวกัน
โยฮันน์คุห์น

4

165 ตัวอักษร (164 คะแนน)

-1 สำหรับการอธิบาย

นี่คือความพยายามของฉัน มันไม่สั้นโดยเฉพาะ แต่มันสนุก

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

มันสไลด์แต่ละองค์ประกอบออกหน้าในทิศทางที่สุ่ม ฉันรวมเฉพาะการขยายเนื่องจากการเน้นไวยากรณ์ (แต่ละสีมีการแยกต่างหาก)

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

แน่นอนว่ามันสามารถย่อให้สั้นลงได้โดยลบแท็กบางส่วนออก แต่แจ้งให้เราทราบหากมีวิธีการย่อให้สั้นลงโดยไม่ลดประสิทธิภาพ


4

181 151 ตัวอักษร - 1 (คำอธิบาย) - 10 (ไม่ใช่ jQuery) = 140 คะแนน

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

สามารถบันทึกอักขระได้อีกสองสามตัวโดยละเว้นfunction(){และใช้สตริงแทน นอกจากนี้ยังทราบสกัดของคุณสมบัติที่ใช้กันทั่วไปเช่นที่c='childNodesช่วยให้เราสามารถทำแทนz[c]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);

ฉันเดาว่าฉันสามารถทำคะแนนให้น้อยลงได้โดยใช้ jQuery และไม่ใช่คุณสมบัติการแวะผ่าน แต่ก็ดี

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

โดยทั่วไปสิ่งนี้จะค้นหาองค์ประกอบ DOM ล่าสุดบนหน้าและลบออก จากนั้นทำต่อไปทุก ๆ 50 มิลลิวินาทีซึ่งฉันพบว่าเป็นความเร็วที่ดีโดยเฉลี่ยในการดูหน้าเว็บที่ฉีกขาดจากพื้นดินขึ้นมา มันเป็นการบำบัดฉันขอสาบาน

ข้อจำกัดความรับผิดชอบ: ฉันได้ทำสิ่งนี้มานานแล้วและตัดสินใจที่จะแบ่งปันเนื่องจากมันเหมาะสมที่นี่ แหล่งที่มาที่พื้นที่เก็บข้อมูล GitHub ของฉัน


มันเยี่ยมมาก! ฉันแก้ไขมันเพื่อรวมเวอร์ชันที่ตีกอล์ฟได้มากขึ้นซึ่งบันทึกตัวละครไม่กี่ตัว ฉันหวังว่าคุณจะไม่รังเกียจ มันเหมือนกันตามหน้าที่
Brigand

@FakeRainBrigand ไม่ได้ทั้งหมดขอบคุณ! ในความเป็นจริงคุณช่วยให้ฉันเรียนรู้เทคนิคใหม่ ๆ ซึ่งเป็นความตั้งใจเดิมของฉันเมื่อเขียนมัน ขอบคุณอีกครั้ง!
อัลฟ่า

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;

มันจะได้รับการตอบคำถามทุกข้อในรูปแบบ<code>javascript:(stuff)</code>ที่ไม่เปลี่ยนแปลงสถานที่และดำเนินการทั้งหมด


อืม ... ฉันเห็นช่องว่างมากมายที่ดูเหมือนจะถอดออกได้ บางทีคุณควรลบออก
John Dvorak

3
ฉันค่อนข้างมั่นใจว่าสิ่งนี้ล้มเหลวในกฎ: "ไม่มีการสร้างแท็กสคริปต์ที่ดึงการระเบิดThisPage.jsหรือคล้ายกัน" นอกจากนี้มันไม่สามารถใช้ได้กับหน้า SO ทุกหน้าเพียงแค่นี้ นอกจากนี้ยังสร้างความเสียหายอย่างแท้จริงสำหรับคำถามที่ถามเกี่ยวกับ XSS ดังนั้นคุณควรเพิ่ม 9e72 ให้กับคะแนนของคุณ
John Dvorak

2

ฉันชอบเอฟเฟกต์นี้ โดยทั่วไปแล้วมันจะสลับเอฟเฟกต์สไลด์สำหรับทุกๆ div บนไซต์ทุกๆ 1 มิลลิวินาที

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

คะแนน

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

ดี แต่ toogle ก็ใช้ได้เหมือนกัน: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.