MediaWiki:Skin/Adventure/Stateful.js
Version vom 1. Juni 2012, 11:15 Uhr von J* (Diskussion | Beiträge)
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: Gehe zu Menü → Einstellungen (Opera → Einstellungen auf dem Mac) und dann auf Datenschutz & Sicherheit → Browserdaten löschen → Gespeicherte Bilder und Dateien.
/**
* Stellt Statusfeatures für das Adventure bereit (noch experimentell).
*
* URL-Parameter, die mit "_adv_" anfangen, werden per Javascript quer durchs Adventure mitgeschleift,
* solange bis sie auf leer gesetzt werden.
* Wie alle URL-Parameter können sie mit #arg ausgelesenen und verarbeitet werden.
*
* Bekannte Bugs:
* - Tod führt nicht zu einem Reset der Stati
*/
function UrlArgs(url, advOnly){
this.args = {};
this.update = function(args) {
for (var i in args)
if (args[i] == "")
delete this.args[i];
else
this.args[i] = args[i];
}
this.serialize = function(){
var s = "";
for (var i in this.args)
s += "&" + i + "=" + this.args[i];
return s.substr(1);
}
this.keep = function() {
var other = new UrlArgs(location.href, true);
other.update(this.args);
var s = other.serialize();
return this.base + (s ? "?"+s : "") + this.anchor;
}
this.base = /^[^?#]+/.exec(url)[0];
var anchor = /#(.+)/.exec(url);
if (anchor == null)
this.anchor = "";
else
this.anchor = anchor[0];
var script = /\?([^#]+)/.exec(url);
if (script == null)
return;
var pairs = script[1].split("&");
for (var i in pairs) {
var kvs = pairs[i].split("=");
if (kvs.length > 1 && (!advOnly || kvs[0].substr(0,1) == "_"))
this.args[kvs[0]] = kvs[1];
}
}
function keepState(link) {
link.href = new UrlArgs(link.href).keep();
}
addOnloadHook(function () {
$('#bodyContent a[href*="Adventure/"]').not(".new").each(function (a,b) {
keepState(b);
});
});