MediaWiki:Gadget-Screenreader-Optimierung-TOC.js

Hywys: Nôch dyner Änderig muess no der Browser-Cache gleert wärde!
Mozilla/Safari/Konqueror: Strg-Umschalttaste-R (oder Umschalttaste drückt halte und uf’s Neu-Laden-Symbol klicke), IE: Strg-F5, Opera/Firefox: F5

/**
 * Verschiebt die Einleitung von Artikeln nach oben, vor Infoboxen, Bilder,
 * Tabellen usw. Eine ausführliche Beschreibung ist auf der Diskussionsseite zu
 * finden.
 */
if ( mw.config.get( 'wgIsArticle' ) && mw.config.get( 'wgNamespaceNumber' ) === 0 ) {
 $( function() {
	var deleteTemplateIds = window.deleteTemplateIds || [];
	var doNotMoveTemplateIds = window.doNotMoveTemplateIds ||
		["loeschantragstext", "qualitaetssicherungstext", "urv",
		"urvzweifel", "Vorlage_Begriffskl.C3.A4rungshinweis",
		"Vorlage_Dieser_Artikel", "Vorlage_Doppeleintrag",
		"Vorlage_Inuse", "Vorlage_loeschen"];
	/* Bevorzugt die Wechseln-zu-Links als Ziel verwenden. */
	var targetWasUsed = false, target = document.getElementById("siteSub");
	/* Alternatives Verschiebeziel bei ausgeblendeten Wechseln-zu-Links. */
	if (! target) target = document.getElementById("contentSub");
	/* Für die Methode insertBefore() wird das nachfolgende Element benötigt. */
	if (target && target.nextSibling) target = target.nextSibling;
	var currentNode, nextNode = target;
	/* Alle Elemente iterativ abarbeiten, beginnend mit dem Zielelement selbst. */
	while ( (currentNode = nextNode ) )
	{
		nextNode = currentNode.nextSibling;
		/* Leerräume, Kommentare, Skripte etc. überspringen. */
		if (currentNode.nodeType !== 1 || currentNode.nodeName === "SCRIPT")
			continue;
		/* Die Sprungmarken vor den Überschriften nicht verschieben. */
		if (currentNode.firstChild && currentNode.firstChild.nodeType === 1 &&
			currentNode.firstChild.nodeName === "A" &&
			! currentNode.firstChild.firstChild) continue;
		/* Bei der ersten gefundenen Zwischenüberschrift abbrechen. */
		if (currentNode.nodeName.match(/^H[1-6]$/i)) return;
		/* Benutzerdefiniertes Löschen von Bausteinen aus der Einleitung. */
		if (currentNode.id)
			for (var i = 0; i < deleteTemplateIds.length; i++)
				if (deleteTemplateIds[i] === currentNode.id)
				{
					currentNode.parentNode.removeChild(currentNode);
					continue;
				}
		/* Bestimmte Bausteine am Anfang stehen lassen. */
		if (currentNode.className === "usermessage")
		{
			target = currentNode.nextSibling;
			continue;
		}
		if (! targetWasUsed && currentNode.id)
			for (var i = 0; i < doNotMoveTemplateIds.length; i++)
				if (doNotMoveTemplateIds[i] === currentNode.id)
				{
					target = currentNode.nextSibling;
					continue;
				}
		/* Nur Bilder, Infoboxen und Ähnliches nach unten schieben. */
		if (currentNode.nodeName.match(/^(DIV|TABLE)$/i)) continue;
		/* Bei Verschiebung auf sich selbst sicherheitshalber abbrechen. */
		if (currentNode === target) return;
		target.parentNode.insertBefore(currentNode, target);
		targetWasUsed = true;
	}
 });
}