MediaWiki:Skin/Adventure/Stateful.js

aus Kamelopedia, der wüsten Enzyklopädie
Version vom 31. Mai 2012, 22:20 Uhr von J* (Diskussion | Beiträge) (AZ: Die Seite wurde neu angelegt.)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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.
/**
 * Provide stateful features for the Adventure Project (still experimental)
 */

function UrlArgs(url, advOnly){
    this.args = {};

    this.update = function(args) {
        for (var i in args)
            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 (!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").each(function (a,b) {
        keepState(b);
    });
});