Utilisateur:Zelda/counter.js
Un article de Wikipédia, l'encyclopédie libre.
Note : Après avoir publié la page, vous devrez forcer son rechargement pour voir les changements : Mozilla / Konqueror / Firefox : Shift-Ctrl-R, Internet Explorer / Opera : Ctrl-F5, Safari : Cmd-R.
/** * Display a counter of how many times the page has been consulted. * The counter is displayes in the upper right corner of the page. * It requires Firefox 2.0 (uses client side persistent storage), * and will NOT work under other non-gecko browsers (IE, OPERA, ...) * author : Zelda for fr.wikipedia.org */ // counter label (internationnalizable and personnalizable variable) var pgCounterLabel = "<small>page consultée <b>$count</b> fois [<a href=\"javascript:resetPageCounter()\">RAZ</a>]</small>"; // prefix for counter storage (shorter is better) var pgCounterPrefix = "counter." /** * Increments and displays page counter */ function pageCounter() { if (typeof globalStorage == "undefined") { alert("This page counter uses persistent storage features and requires Mozilla Firefox 2.0"); return; } // Counter only available in main namespace to spare storage if (wgNamespaceNumber != 0) return; if (wgAction != "view") return; // Retrieve and increment counter var count = getPageCounter() + 1; setPageCounter(count); displayPageCounter(count); } /** * Return page counter global storage */ function getPageCounterStorage() { return globalStorage[location.hostname]; } /** * Return page counter as an integer */ function getPageCounter() { var count = getPageCounterStorage().getItem(pgCounterPrefix + wgArticleId); if (! count) return 0; return parseInt(count); } /** * Page counter setter */ function setPageCounter(count) { getPageCounterStorage().setItem(pgCounterPrefix + wgArticleId, count); } /** * Reset counter for ALL pages */ function resetPageCounter() { var storage = getPageCounterStorage(); for (var i = 0; i < storage.length; i++) { var key = storage.key(i); if (key.substr(0, pgCounterPrefix.length) == pgCounterPrefix) { storage.removeItem(key); } } // updating counter var counter = document.getElementById("page-counter"); if (counter) { counter.innerHTML = pgCounterLabel.replace(/\$count/, getPageCounter()); } } /** * Display page counter */ function displayPageCounter(count) { var counterDiv = document.createElement("div"); counterDiv.innerHTML = pgCounterLabel.replace(/\$count/, count); counterDiv.style.textAlign="right"; counterDiv.id = "page-counter"; var contentNode = document.getElementById("content"); contentNode.insertBefore(counterDiv, contentNode.firstChild); } addLoadEvent(pageCounter);