Usuario:Ciencia Al Poder/js/LibroAleatorio.js

De Wikilibros, la colección de libros de texto de contenido libre.

Nota: Después de publicar, quizás necesite actualizar la caché de su navegador para ver los cambios.

  • Firefox/Safari: Mantenga presionada la tecla Shift mientras pulsa el botón Actualizar, o presiona Ctrl+F5 o Ctrl+R (⌘+R en Mac)
  • Google Chrome: presione Ctrl+Shift+R (⌘+Shift+R en Mac)
  • Internet Explorer/Edge: mantenga presionada Ctrl mientras pulsa Actualizar, o presione Ctrl+F5
  • Opera: Presiona Ctrl+F5.
/* 
== Libro aleatorio ==
Inspirado en RandomBook() de b:en:, pero reescrito de 0 y usando api.php
<pre> */

var LibroAleatorio_lista = 'Wikilibros:Libros_terminados';

function LibroAleatorio_init(){
	var rnd = document.getElementById('n-randompage');
	if (!rnd || rnd.getElementsByTagName('a').length == 0) return;
	var a = rnd.getElementsByTagName('a')[0];
	addClickHandler(a, LibroAleatorio);
}

function LibroAleatorio(event){
	x = sajax_init_object();
	if (!x) return;
	var uri = wgScriptPath + '/api.php?action=query&titles=' + LibroAleatorio_lista + '&prop=links&format=xml';
	x.open('GET', uri, true);
	x.setRequestHeader("Pragma", "cache=yes");
	x.setRequestHeader("Cache-Control", "no-transform");
	x.onreadystatechange = function() {
		if (x.readyState != 4 || x.status != 200) return;
		var doc = x.responseXML;
		if (!doc) return;
		var libros = doc.getElementsByTagName('pl');
		if (!libros || libros.length == 0) return;
			var masIntentos = 20;
			var libro;
			do {
				libro = libros.item(Math.floor(Math.random() * libros.length));
			} while (libro.getAttribute('ns').toString() != '0' && masIntentos--)
			//window.location = mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1',libro.getAttribute('title').toString());
			alert(mw.config.get('wgServer') + mw.config.get('wgArticlePath').replace('$1',libro.getAttribute('title').toString()));
	};
	x.send(null);
	// Evitamos que el evento siga al hipervínculo.
	if (event.preventDefault)
		event.preventDefault();
	else //IE
		event.returnValue = false;
}

$( LibroAleatorio_init );

/* </pre> */