MediaWiki:RandomBook.js
Σημείωση: μετά την δημοσίευση, ίσως χρειαστεί να παρακάμψετε την προσωρινή μνήμη του προγράμματος περιήγησής σας για να δείτε τις αλλαγές.
- Firefox / Safari: Κρατήστε πατημένο το Shift κάνοντας ταυτόχρονα κλικ στο κουμπί Ανανέωση ή πιέστε Ctrl-F5 ή Ctrl-R (⌘-R σε Mac)
- Google Chrome: Πιέστε Ctrl-Shift-R (⌘-Shift-R σε Mac)
- Internet Explorer / Edge: Κρατήστε πατημένο το Ctrl κάνοντας ταυτόχρονα κλικ στο κουμπί Ανανέωση, ή πιέστε Ctrl-F5
- Opera: Πιέστε Ctrl-F5.
//
// Redirect to a Random Book
// maintained by [[User:Darklama|darklama]]
//
// Gets a page from the wiki and runs function action on it
function GetPage(page, action)
{
var doc = new XMLHttpRequest();
if (doc) {
var url = mw.config.get('wgArticlePath').replace(/\$1$/, page);
doc.onreadystatechange = function() { action(doc); };
doc.open('GET', url+'?printable=true', true);
if (doc.overrideMimeType)
doc.overrideMimeType('text/xml');
else
doc.setRequestHeader("Content-Type", "text/xml; charset=UTF-8");
doc.send(null);
}
}
// Get a random page from Wikibooks:Alphabetical_classification
function RandomBook()
{
function random_book(doc) {
try {
if (doc.readyState == 4 && doc.status == 200)
{
var wiki = doc.responseXML;
if (wiki)
{
var books = wiki.getElementById('books').getElementsByTagName('li');
if (books && books.length > 0) {
var page = books.item(Math.floor(Math.random() * books.length + 1)).firstChild;
while ($(page).hasClass("new") || $(page).hasClass("external")) {
page = books.item(Math.floor(Math.random() * books.length + 1)).firstChild;
}
window.location = page.href;
}
}
}
} catch (e) { }
}
GetPage("Wikibooks:Alphabetical_classification", random_book);
}
// Adds a random book link to the navigation toolbar and calls RandomBook when clicked
function RandomBookLink() {
var tb = document.getElementById('p-navigation');
var link = document.createElement('a');
var li = document.createElement('li');
if (tb) {
tb = tb.getElementsByTagName('ul')[0];
link.title = "Random Book";
link.href = "javascript:RandomBook();";
link.onmouseover = function() { window.status = "Random Book"; return true; }
link.onmouseout = function() { window.status = ""; return true; }
if (link.addEventListener) {
link.addEventListener("click", RandomBook, false);
} else if (link.attachEvent) {
link.attachEvent("onclick", function() { RandomBook(); });
} else if (link.onclick) {
link.onclick = function() { RandomBook(); }
}
link.appendChild(document.createTextNode("Random book"));
li.id = "n-random-book";
li.appendChild(link);
tb.appendChild(li);
}
}
$(document).ready( RandomBookLink );