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
/*-----------------------------------------------------------------*\
|| Automatische Aktualisierung der Letzten Änderungen mit AJAX ||
|| ||
|| Funktionsliste: ||
|| ajaxRC.init() Initialisiert das Skript ||
|| ajaxRC.toggle(); Wenn das Kästchen angeklickt wird ||
|| ajaxRC.load(); Lade den Code der Seite neu ||
|| ajaxRC.parse(); Aktualisiere die Anzeige der Seite ||
|| ajaxRC.disable(); Skript wird bei Inaktivität ausgeschaltet ||
|| ajaxRC.disableCheck();Skript wird bei Inaktivität ausgeschaltet ||
\*-----------------------------------------------------------------*/
//Setze Cookie, damit das Kästchen in Zukunft automatisch aktiviert ist
function setCookie(c_name,value,expiredays) {
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
function getCookie(c_name) {
if (document.cookie.length>0) {
var c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1) {
c_start=c_start + c_name.length+1;
var c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
var ajaxRC=new Object();
// CONFIG //
ajaxRC.ajaxPages=new Array("Special:RecentChanges", "Spezial:Letzte_Änderungen", "Spezial:Letzte Änderungen",
"Special:Watchlist", "Spezial:Beobachtungsliste",
"Special:Log", "Spezial:Logbuch",
"Special:Contributions", "Spezial:Beiträge",
"Special:Statistics", "Spezial:Statistik");//Seiten, die aktualisiert werden sollen
ajaxRC.refresh=30*1000;//Nach wie vielen Millisekunden die Seite erneut geladen werden soll
ajaxRC.regexp_crlf=new RegExp('\r|\n', "gm");
ajaxRC.regexp_start=new RegExp('^.*<div id="bodyContent"( class="mw-body")?>', "mi");
ajaxRC.regexp_end=new RegExp('<div class="visualClear">.*$', "mi");
// INIT-VARIABLES //
ajaxRC.activated=false;//Ob das Kästchen angeklickt ist
ajaxRC.disabled=false;//Ob Ajax nach fünf Minuten inaktiv wurde
ajaxRC.request=null;//Ajax-Request
ajaxRC.interval=null;//Intervall zum Laden der Seite
ajaxRC.disableTimeout=null;//Timer, bis Ajax inaktiv wird
ajaxRC.checkbox=null;//Kästchen-Element
ajaxRC.spinner=null;//Drehender Kreis-Element
ajaxRC.url=document.URL;//URL der Seite zum Laden
if (ajaxRC.url.indexOf("?")==-1) ajaxRC.url+="?nocache="; else ajaxRC.url+="&nocache=";//Seitencache verhindern
// FUNCTIONS //
ajaxRC.init=function() {//Fügt das Ankreuzkästchen am Anfang der Seite hinzu
if (wgPageName=="Spezial:Letzte_Änderungen") document.getElementById("firstHeading").innerHTML="Letzte Änderungen";//Entfernt Spezial: aus der Überschrift bei den Letzten Änderungen
document.getElementById("firstHeading").innerHTML+='<div style="float:right;height:1px;margin-top:.2em;"><img id="ajaxspinner" style="visibility:hidden;vertical-align:3%" src=" https://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" alt="Inhalt wird aktualisiert..." /> <span style="font-size:xx-small;vertical-align:middle">Automatische Aktualisierung:</span> <input type="checkbox" id="ajaxRCtoggle" onClick="ajaxRC.toggle();" style="vertical-align:12%"></div>';
ajaxRC.checkbox=document.getElementById("ajaxRCtoggle");
ajaxRC.spinner=document.getElementById("ajaxspinner");
if (getCookie("ajaxload-"+wgPageName) == "on") {
ajaxRC.checkbox.checked=true;
ajaxRC.toggle();
}
}
ajaxRC.toggle=function() {//Kästchen wurde angeklickt (sowohl Aktivierung wie auch Deaktivierung)
ajaxRC.activated=ajaxRC.checkbox.checked;
if (ajaxRC.activated==true) {//Aktivierung
setCookie("ajaxload-"+wgPageName, "on", 30);
ajaxRC.load();
ajaxRC.interval=window.setInterval(ajaxRC.load, ajaxRC.refresh);
} else {//Deaktvierung
ajaxRC.request=null;
ajaxRC.spinner.style.visibility="hidden";
setCookie("ajaxload-"+wgPageName, "off", 30);
window.clearInterval(ajaxRC.interval);
}
}
ajaxRC.load=function() {//Starte eine Anfrage nach neuen Inhalten
ajaxRC.request=getXmlHttpRequestObject();
if (ajaxRC.request && (ajaxRC.request.readyState==0 || ajaxRC.request.readyState==4)) {
ajaxRC.spinner.style.visibility="visible";
ajaxRC.request.onreadystatechange=ajaxRC.parse;
ajaxRC.request.open("GET", ajaxRC.url+Math.random(), true);
ajaxRC.request.setRequestHeader("Cache-Control", "no-cache");
ajaxRC.request.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
ajaxRC.request.send(null);
}
}
ajaxRC.parse=function() {//Wenn Antwort kommt
if (ajaxRC.request && ajaxRC.request.readyState==4) {
ajaxRC.spinner.style.visibility="hidden";
document.getElementById("bodyContent").innerHTML=ajaxRC.request.responseText.replace(ajaxRC.regexp_crlf,"").replace(ajaxRC.regexp_start,"").replace(ajaxRC.regexp_end,"");
if (mw.special && mw.special.recentchanges) mw.special.recentchanges.init();//Initialisiere Namensraum-Element
$("table.mw-collapsible").makeCollapsible();//Klappe erweiterte Letzte Änderungen ein
}
}
ajaxRC.disable=function() {//Wenn die Seite nicht mehr angesehen wird
ajaxRC.disabled=true;
window.clearInterval(ajaxRC.interval);//Stoppe Aktualisierung
}
ajaxRC.disableCheck=function() {//Wenn die Maus
if (ajaxRC.activated==true) {
if (ajaxRC.disabled==true) {
ajaxRC.disabled=false;
ajaxRC.load();
ajaxRC.interval=window.setInterval(ajaxRC.load, ajaxRC.refresh);
}
window.clearTimeout(ajaxRC.disableTimeout);
ajaxRC.disableTimeout=window.setTimeout(ajaxRC.disable,1000*60*5);//5 Minuten
}
}
for (var j=0; j<ajaxRC.ajaxPages.length; j++) {//Prüft, ob aktuelle Seite AJAX-Aktualisierung enthalten soll, und fügt, falls ja, ein Kästchen ein
if (wgPageName == ajaxRC.ajaxPages[j]) {
addOnloadHook(ajaxRC.init);
if (window.addEventListener) window.addEventListener("mousemove", ajaxRC.disableCheck, true);
else if (window.attachEvent) window.attachEvent("onmousemove", ajaxRC.disableCheck);
else window.onmousemove=ajaxRC.disableCheck();
break;
}
}