Benutzer:Ghost/Ajax.js
aus Stargate Wiki, dem deutschsprachigen Stargate-Lexikon
Hinweis: Leere nach dem Speichern 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
- Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
/*-----------------------------------------------------------------*\ || 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; } }