Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.

Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;

Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.
/// Zone personnalisable ///

var delai = 10; // (en secondes)

////////////////////////////

function verifMsgs(temps) {
  makeRequest('http://fr.wikipedia.org/w/api.php?action=query&meta=userinfo&uiprop=hasmsg&format=xml');
  setTimeout("verifMsgs()",temps);
}

boiteMsg = document.createElement('div');
boiteMsg.setAttribute('style', 'display:none; z-index:3; position: fixed; right:20px; bottom:0; display:block; background-color: #ffce7b; border: 1px solid #ffa500; border-bottom:0px; vertical-align:center; text-align:center; padding:10px; text-decoration:blink;');
boiteMsg.innerHTML = '<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Nuvola_apps_email.png/25px-Nuvola_apps_email.png" alt="" width="25" height="25" longdesc="https://fr.m.wikipedia.org/wiki/Image:Nuvola_apps_email.png" /> Vous avez de <a href="https://fr.m.vvikipidea.org/wiki/Discussion Utilisateur:' + mw.config.get('wgUserName') + '" style="font-weight:bold;">nouveaux messages</a> (<a href="https://fr.m.vvikipidea.org/w/index.php?title=Discussion Utilisateur:' + mw.config.get('wgUserName') + '&diff=cur" style="font-weight:bold;">diff</a>).';
document.body.appendChild(boiteMsg);

$(function() { var delay = delai*1000; verifMsgs(delay); });

//####################################################
function makeRequest(url) {
        var httpRequest = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            httpRequest = new XMLHttpRequest();
       }
        else if (window.ActiveXObject) { // IE
            try {
                httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
            }
            catch (e) {
                try {
                    httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
                }
                catch (e) {}
            }
        }
        if (!httpRequest) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
        httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
        httpRequest.open('GET', url, true);
        httpRequest.send(null);
    }
    function alertContents(httpRequest) {
        if (httpRequest.readyState == 4) {
            if (httpRequest.status == 200) {
if (httpRequest.responseText.indexOf('messages=""') != -1) {   // je sais, c'est pas propre.
  boiteMsg.style.display = 'block';
  } else {
  boiteMsg.style.display = 'none';
}
            }
        }
    }