Tạo StackOverflow Explode (bookmarklet) [đã đóng]


28

Đôi khi mọi người cảm thấy thất vọng trên mạng StackExchange (cụ thể là SO).

logo stackoverflow sửa đổi

Nhiệm vụ của bạn là tạo một bookmarklet khiến StackOverflow phát nổ / nổ / phá hủy theo cách nào đó. Điều này sẽ cung cấp một cách tốt hơn để phân tán sự thất vọng của chúng tôi.

Những quy định:

  • nó phải ở dạng bookmarklet
  • phải hoạt động trong Chrome và Firefox (ổn định mới nhất)
  • jQuery có trên trang web, vì vậy bạn có thể sử dụng nó
  • không tạo thẻ script nào có thể nổ nổ ThisPage.js hoặc tương tự

Ghi điểm là số lượng ký tự cần được sao chép và dán, ngoại trừ:

  • -1 nếu bạn bao gồm một lời giải thích
  • -5 cho mỗi upvote
  • -10 nếu bạn không sử dụng jQuery
  • -10 nếu nó phát ra tiếng nổ
  • + 9e72 nếu nó thực sự gây hại cho trang web (F5 nên sửa chữa thiệt hại)

Nếu gif mất tập trung, hãy loại bỏ nó.


7
IMO thông số kỹ thuật không đủ sắc nét để xác định khách quan xem liệu bài nộp có đáp ứng hay không.
Peter Taylor

trong một bình luận, vì nó không phải của tôi: 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
Nhận xét của tôi không phải là về hệ thống tính điểm mà là về đặc tả nhiệm vụ.
Peter Taylor

4
Có thật không? Đó phải là điểm trừ 9*10**72 nếu nó thực sự quản lý để gây hại cho trang web, và sau đó sửa chữa nó khi người dùng tải lại trang. Đó sẽ là một kỳ công.
Blacklight Shining

2
@FakeRainBrigand IMO, gây ra tác hại thực sự cho trang web được sửa chữa bằng cách nào đó khi tải lại là ấn tượng hơn nhiều so với chỉ đơn giản là gây hại cho trang web.
Blacklight Shining

Câu trả lời:


27

Gà!

Điểm: 46 - 1 (giải thích) - 5 * 17 (phiếu) = -40

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

Nó chỉ đơn giản là lấy mọi yếu tố không có con và thay thế nó bằng văn bản 'chicken' .

Ảnh chụp màn hình mẫu:
nhiều gà hơn
câu hỏi này

hình ảnh


Ý tưởng tuyệt vời :-) Thật thú vị khi thấy những thứ như "gà trả lời" hoặc tiêu đề trang, có từ không phải gà ... Tại sao?
Brigand

@FakeRainBrigand Huh? Tiêu đề trang trở thành "con gà" đối với tôi ...
Doorknob

Phiên bản dài hơn nhưng kỹ lưỡng hơn, một phần dựa trên mục nhập của tôi:javascript:void($(':not(iframe,script,style)').contents().each(function(){if(this.nodeType==3)this.nodeValue=this.nodeValue.replace(/\w+/g,'chicken')}))
Ilmari Karonen

@Doorknob, xin chúc mừng, bạn có số điểm 15, là mức thấp nhất (xin lỗi, tôi mất quá nhiều thời gian để chấp nhận một). Tuy nhiên, nếu tôi có thể làm lại từ đầu, tôi sẽ thực hiện một phiếu bầu trị giá -15.
Brigand

1
Đáng lẽ phải là HODOR!
SztupY

27

Đây là mục của tôi, mà tôi sẽ gọi người say rượu :

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

Với 474 ký tự, có lẽ nó sẽ không giành được bất kỳ giải thưởng golf nào, nhưng tôi hy vọng sẽ bù đắp cho nó trong các giải đấu. :)

Đây là cùng một mã khử.

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

Những gì nó làm là ngẫu nhiên thay đổi văn bản trên trang, hoán đổi các ký tự liền kề, xóa hoặc sao chép các ký tự hoặc thay thế chúng bằng các ký tự liền kề với chúng trên bàn phím. Hiệu ứng ban đầu khá tinh tế, nhưng hãy để nó chạy một lúc và nội dung trang chắc chắn sẽ phân rã thành một mớ hỗn độn khi gõ:

Về nhà đi, SO, bạn say rồi!

Thi thiên Mã không theo bất kỳ cách nào cụ thể SO, vì vậy nó sẽ hoạt động trên bất kỳ trang web nào sử dụng jQuery. Hãy thử nó trên Wikipedia cho kết quả vui nhộn. Ý tưởng này dựa trên một cái gì đó tôi đã viết cách đây nhiều năm như một cách giải thích sáng tạo cho thử thách "99 chai bia": phiên bản của tôi đã giới thiệu một số lỗi chính tả tăng chậm vào mỗi câu, cho đến khi những câu cuối cùng đều không thể nhận ra. Nếu bất cứ ai muốn xem nó, đây là mã Perl gốc .


6
Thêm vào đó là Dyslexinator (sorru, tôi đang gõ trong khi nó bị hủy hoại)
TheDoctor

16

Tôi không biết tại sao điều này bị hạ thấp, tôi thích nó :)

Đây không phải là ngắn nhất, nhưng tôi nghĩ nó đẹp:

133 ký tự -1

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

Ung dung:

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

Giải thích: Tôi hy vọng tính này, tập lệnh này sẽ kích hoạt trang web thay vì phát nổ nó;) Điều này chỉ chọn một div ngẫu nhiên hoặc kéo dài mỗi 90ms và đóng lại từ từ ..


+1 nhưng ngẫu nhiên () không hiệu quả cho việc tiêu diệt hoàn toàn và có kiểm soát, dù sao thì tôi cũng thích nó :)
Daniele Brugnara

Chỉ cần ném nó vào cửa sổ URL, và không có gì xảy ra ,,,?
WallyWest

Xin lỗi Wally, không thấy bình luận của bạn. Bạn cần lưu nó dưới dạng bookmark.
Fels

12

Bởi vì nó không được xác định nếu điểm cao hơn hoặc thấp hơn sẽ thắng ...

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

Cơ sở: 38
Bonis:

  • + 9e72 Sát thương vĩnh viễn.

Điểm cuối cùng: 90000000000000000000000000000000000000000000000000000000000000000000000000038

Btw, tôi đã không thử nó.


1
haha Bằng cách này, nếu bạn yêu cầu JavaScript: 9e72+38 === 9e72:-)
Brigand

3
Ai hỏi javascript? Sử dụng jQuery .
Julian Kuhn


4
Ơ ... tôi nên bỏ phiếu xuống hay lên ...?
Bạn của Kim

1
Ồ, tôi hiểu rồi ... nó bấm vào nút có lớp "bỏ phiếu" nếu bạn sử dụng nó. Đó là thử thách mã được gắn thẻ, ngụ ý rằng điểm thấp nhất sẽ thắng.
Nzall

8

Đồng tử của tôi có tới 250 ký tự.

Chủ yếu không phải là ngắn hơn, nhưng tôi thích nó ;-)

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: Giải thích:

  • Tôi sử dụng hình ảnh gif hoạt hình đẹp được cung cấp từ câu hỏi,
  • Với sự trợ giúp của CSS, tôi đặt chúng trên trang trong toàn trang, với độ mờ 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%;
');

Chủ yếu là có thể đọc được ;-)

-10 Không có JQuery

Thay thế:

Có một cách khác:

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

Dựa trên GIF chưa sửa đổi, được tìm thấy tại Wikimedia Commons: Tập tin: Hoạt hình rực lửa của nevit.gif

Hình: Hình ảnh từ Wikipedia

Mẫu vật:

nhập mô tả hình ảnh ở đây


Thật tuyệt vời!
Brigand

5

Ok, tôi nghĩ rằng điều này nên thực hiện các tiêu chí:

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

Thay thế trang hiện tại bằng "Đã nổ"

Điểm: 46
-1 Giải thích
-10 Không có jQuery

35


5

Điều này thật thú vị và cũng gây ra một chút độ trễ: D

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

Nó chỉ đặt một khoảng thay thế tất cả các chuỗi chữ số bằng một số ngẫu nhiên từ 0 đến 100. Hai lần mỗi giây. Nó tạo ra một loạt lỗi, như bạn có thể dự đoán và tôi có thể sửa nó để dừng tất cả 404 khi URL hình ảnh bị thay đổi, nhưng tôi nghĩ nó thú vị hơn theo cách này và đó là mã golf. : D

Ghi bàn:

  • 132 cơ sở
  • -1 giải thích
  • -5 upvote
  • -10 không có jQuery

Tổng số điểm: 116


Không hoạt động trong firefox.
Julian Kuhn

@JohannesKuhn Nó làm gì trong FF? Nó hoạt động trong Chrome
Doorknob

Hiển thị một trang trống với một số.
Julian Kuhn

@JohannesKuhn Tôi nghĩ rằng tôi đã sửa nó; không function x(){document.body.innerHTML=document.body.innerHTML.replace(/\d+/g,function(){return Math.random()*100|0})}setInterval(x,500)làm việc cho bạn bây giờ?
Doorknob

Có, nhưng một đĩa đơn ;ở cuối sẽ làm như vậy.
Julian Kuhn

4

165 ký tự (164 điểm)

-1 để giải thích

Đây là nỗ lực của tôi. Nó không đặc biệt ngắn, nhưng nó rất vui.

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

Nó trượt các yếu tố riêng lẻ ra khỏi trang theo hướng ngẫu nhiên. Tôi đặc biệt bao gồm span vì đánh dấu cú pháp (mỗi màu có một khoảng riêng).

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

Tất nhiên nó có thể được rút ngắn bằng cách loại bỏ một số thẻ, nhưng hãy cho tôi biết nếu có bất kỳ cách nào để rút ngắn nó mà không làm giảm hiệu suất.


4

181 151 ký tự - 1 (giải thích) - 10 (không có jQuery) = 140 điểm

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

Một vài ký tự có thể được lưu bằng cách bỏ qua function(){và sử dụng một chuỗi thay thế. Cũng lưu ý việc trích xuất các thuộc tính thường được sử dụng, ví dụ, c='childNodescho phép chúng tôi thực hiện z[c]thay vì 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);

Tôi đoán rằng tôi có thể kiếm được ít điểm hơn bằng cách sử dụng jQuery và không đi qua các thuộc tính, nhưng ồ.

Ung dung:

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

Về cơ bản, điều này tìm thấy phần tử DOM mới nhất trên trang và xóa nó. Sau đó tiếp tục làm điều đó cứ sau 50 mili giây, mà tôi thấy đó là một tốc độ tốt đẹp trung bình để thấy một trang bị xé từ mặt đất lên. Nó trị liệu, tôi thề.

Tuyên bố miễn trừ trách nhiệm: Tôi đã thực hiện điều này một thời gian trước đây và quyết định chia sẻ nó, vì nó có vẻ phù hợp ở đây. Nguồn là tại kho GitHub của tôi .


Điều đó thật tuyệt! Tôi đã chỉnh sửa nó để bao gồm một phiên bản nhiều gôn hơn để lưu một vài ký tự. Tôi hy vọng bạn không phiền. Nó giống nhau về mặt chức năng.
Brigand

@FakeRainBrigand Không hề, cảm ơn! Trong thực tế, bạn đã giúp tôi tìm hiểu một số thủ thuật mới, đó là ý định ban đầu của tôi khi viết nó. Cảm ơn một lần nữa!
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;

Nó nhận được mọi câu trả lời cho câu hỏi dưới dạng <code>javascript:(stuff)</code>không thay đổi địa điểm và chạy tất cả chúng.


Hmm ... Tôi có thể thấy rất nhiều khoảng trắng dường như có thể tháo rời. Có lẽ bạn nên loại bỏ nó.
John Dvorak

3
Tôi khá chắc chắn rằng điều này không thành công theo quy tắc: "không tạo ra một thẻ script nào có thể nổ blast ThisPage.js hoặc tương tự". Ngoài ra, nó không hoạt động trên mọi trang SO, chỉ trang này. Ngoài ra, nó thực sự gây thiệt hại cho các câu hỏi về XSS, vì vậy bạn nên thêm 9e72 vào điểm số của mình.
John Dvorak

2

Tôi thích hiệu ứng này. Về cơ bản, nó bật một hiệu ứng trượt cho mỗi div trên trang web cứ sau 1 mili giây.

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

Ghi bàn

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

Đẹp, nhưng chỉ cần toogle cũng sẽ hoạt động: javascript:setInterval(function(){$('div').toggle(88)},1)
Fels
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.