Benutzer:Revolus/monobook.js/XML-Beschreibung-Da-Test.js
Hinweis: Leere nach dem Veröffentlichen den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Edge: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
/* <pre> */
if(wgCanonicalNamespace == "Category") addOnloadHook(function() {
// Seitenlinks in der Kategorie nach $Links
var Links;
if(Links = document.getElementById("mw-pages")) {
if(!(Links = Links.getElementsByTagName("a")) || (Links.length<1)) return;
} else return;
// Anfrage nach $s
var s = "";
for(var i=0; i<Links.length; i++) {
var t = Links[i].getAttribute("title");
if((t.indexOf("Vorlage")==0) || (t.indexOf("Template")==0))
s += t + "/XML|";
};
if(s=="") return;
s = s.substr(0, s.length - 1);
// Ajax-Objekt holen -> $xhr
var xhr = null;
try { xhr = new XMLHttpRequest(); }
catch(e) {
try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }
catch(e) { return; };
};
// Bei-Antwort-Funktion
xhr.onreadystatechange = function() {
if((xhr.readyState == 4) && (xhr.status == 200)) { // Alles ok?
var o = eval("(" + xhr.responseText + ")"); // [[JSON]] parsen
if((!o) || (!(o = o.query)) || (!(o = o.pages))) return; // Korrekte ausgabe?
for(var i in o) { // jede Rückgabe untersuchen
if(i<0) continue; // Keine Revision gespeichert -> existiert nicht
var s = o[i].title;
s = "/wiki/" + s.substr(0, s.length - 4).replace(/ /g, "_");
var l = false;
for(var h = 0; h<Links.length; h++) // entsprechenden Links nach $l suchen
if(Links[h].getAttribute("href") == s) {
l = Links[h];
break;
};
if(!l) continue; // keinen entsprechenden Link gefunden (?)
var info = document.createElement("a"); // Info erstellen
info.setAttribute("class", "CAT-XML-da");
info.setAttribute("href", l.href + "/XML");
info.setAttribute("title", l.title + "/XML");
info.appendChild(document.createTextNode("XML"));
l.parentNode.insertBefore(info, l); // und vor den Link setzen
l.parentNode.setAttribute("class", "CAT-XML-da"); // Auch das <LI> soll das wissen.
};
};
};
// Anfrage
xhr.open("GET", "/w/api.php?action=query&prop=info&format=json&titles="+ s, true);
xhr.send(null);
});
/* </pre> */