MediaWiki:Gadget-PerubahanLangsung.js

Daripada Wikipedia, ensiklopedia bebas.

Catatan: Selepas menyiarkan perubahan, anda mungkin perlu memintas cache pelayar untuk melihatnya.

  • Firefox / Safari: Tahan Shift sambil mengklik Reload, atau tekan sama ada Ctrl-F5 atau Ctrl-R (⌘-R pada Mac)
  • Google Chrome: Tekan Ctrl-Shift-R (⌘-Shift-R pada Mac)
  • Internet Explorer / Edge: Tahan Ctrl sambil mengklik Refresh, atau tekan Ctrl-F5
  • Opera: Tekan Ctrl-F5.
/** PerubahanLangsung.js
 * Penulis: [[Pengguna:Kurniasan]]
 * CHANGELOG:
 * 26/2/2012
 * - Ubah sela dari 500ms ke 1s untuk jimatkan penggunaan CPU.
 * - Kecilkan skop penggantian kandungan, cari "ul.special", dulunya "#mw-content-text".
 * - Hentikan sementara interval apabila pautan dihover.
 * 10/4/2013
 * - Bunuh pepijat untuk kecacatan bagi bilangan h4 > 1.
 * - Biarkan sela dipegang oleh pembolehubah supaya pengguna boleh menggunakan sela sendiri.
 */

if (mw.config.get('wgPageName') == "Khas:Perubahan_terkini") {
    if (window.selaUbahLangsung === undefined) {
        window.selaUbahLangsung = 2000; //2 saat.
    }

    var hentiMasaHover = function() {
        $('ul.special li a').hover(function() {
            clearInterval(window.idSela);
        }, function() {
            window.idSela = setInterval(ubahLangsung, window.selaUbahLangsung);
        });
    };
    
    var ubahLangsung = function() {
        $.get(window.location.href, function(data) {
                data = data.replace(/<!D[\w\s]+>/,"");
                data = $(data).find('#bodyContent').html();
                if ($(data).find('ul.special:first li:first').text() != $('ul.special:first li:first').text()) {
                    var nUL1 = $('ul.special');
                    var nUL2 = $(data).find('ul.special');
                    if (nUL1.length < nUL2.length) {
                        $('h4:first').before($(data).find('h4:first'));
                        $('h4:first').before($(data).find('ul.special:first'));
                    } else if (nUL1.length > nUL2.length) {
                        $('ul.special:last').prev().remove();
                        $('ul.special:last').remove();
                    } else {
                        $(data).find('ul.special:first li:first').css('opacity', 0);
                        $('ul.special:first').html($(data).find('ul.special:first').html());
                        $('ul.special:first li:first').css("background","yellow")
                        .animate({opacity:1}, 500, function() {
                                $(this).css("background","");
                            });
                    }
                    
                    var m = window.location.href.match(/.*&limit=(\d+)/);
                    var limit = m === null ? 50 : (1*m[1]);

                    while($('ul.special li').length > limit) {
                        $('ul.special:last li:last').remove();
                    }
                    hentiMasaHover();
                }
            });
    };
    window.idSela = setInterval(ubahLangsung, window.selaUbahLangsung);
    hentiMasaHover();
}