Benutzer:PerfektesChaos/js/browserStorageManager

JavaScript Gadget – Werte der Cookies und Web Storage anzeigen und manipulieren.

Die für das momentane Wiki-Projekt (Domain und Sub-Domain) wirksamen Werte werden angezeigt und können gelöscht, verändert oder neu erstellt werden.

Für viele Browser können Add-ons installiert werden, die ebenfalls einige dieser Fähigkeiten anbieten, und zusätzliche Möglichkeiten erweitert auch für jede Domain; oder sie sind bereits in die Debugging-Werkzeuge des Browsers und den Experten-Modus integriert. Dieses Helferlein ist dazu gedacht, bei Verwendung unterschiedlicher Browser und Mobilgeräte eingesetzt zu werden und dabei einen einheitlichen Zugang zu den Daten zu ermöglichen.

Funktionalität

Bearbeiten

Ein Link in der Werkzeugbox der Wiki-Seite wird angeboten. Außerdem werden Funktionsaufrufe bereitgestellt (API).

  • Daraufhin wird auf der Wiki-Seite im Seitenkopf für jede Speicherform eine Tabelle angezeigt, die auch Löschung und Textzuweisung erlaubt. Sie enthält auch die Gesamtlänge für diese Domain.
  • Sie enthält als sortierbare Spalten den Namen und die Länge jedes Werts.

Es werden alle Einträge dargestellt, die mit JavaScript zugänglich sind. Es gibt Cookies, die mit HttpOnly markiert sind und zum Server transferiert werden, aber vor dem HTML-Dokument versteckt werden und damit auch für JavaScript nicht sichtbar sind.

Die Werte der Cookies und localStorage sind für alle Fenster/Tabs der Domain gleich. Hingegen können Browser das flüchtige sessionStorage spezifisch für einzelne Fenster/Tabs handhaben und in jedem Browser-Fenster unterschiedliche Werte verwenden. Das ist sinnvoll, um bei innerhalb eines Fensters aufeinander folgenden Dokumenten Informationen weiterzugeben, wie sie auch die Aufrufgeschichte („Zurück“-Funktion) im Fenster teilen.

Die Art des Cookies (session, Ablaufdatum, path) ist für das HTML-Dokument nicht ermittelbar. Es werden alle Cookies gezeigt, die für die momentane Domain und den momentanen Pfad gültig sind, und deren Verfallszeitpunkt noch nicht überschritten wurde.

Einbindung

Bearbeiten

Folgende Zeile in die persönliche common.js einfügen:

mw.loader.load( "https://en.wikipedia.org/w/index.php?title=User:PerfektesChaos/js/browserStorageManager/r.js&action=raw&bcache=1&maxage=604800&ctype=text/javascript",
                "text/javascript" );

Damit werden alle Funktionen bereitgestellt, einschließlich eines Links in der Werkzeugbox.

Wenn auf das Werkzeug-Link geklickt wird, wird die momentane Wiki-Seite mit ein bis drei Tabellen ausgestattet, in denen alle zugänglichen Einträge aufgelistet werden.

Interaktive Manipulation

Bearbeiten
Icon Meaning
 * 
Tabellenfuß
 
Tabelleninhalt aktualisieren.
 
 + 
Tabellenfuß
Neuen Eintrag erstellen.
Die Tabelle wird automatisch aktualisiert, nachdem der neue Name gespeichert wurde.
Cookies werden dem / path zugeordnet.
  
Ende der Namenszelle
Eintrag löschen.
Die Tabelle wird automatisch aktualisiert.
 

Ende der Wertezelle
Wert des Eintrags bearbeiten.
Nur wenn der Momentanwert die angezeigte Zeichenlänge nicht überschreitet: Es ist keine gute Idee, einen Text manuell zu verändern, der anschließend nicht sichtbar ist.
+
bei Bearbeitung
Wert speichern.
Die Gesamtlänge wird nicht aktualisiert; dazu „Tabelle aktualisieren“ anklicken.
X
bei Bearbeitung
Bearbeitung abbrechen.

bei Bearbeitung
Mache den Cookie persistent für einige Jahre (Vorgabe: nur session).

Benutzerkonfiguration

Bearbeiten

Der Ausgangszustand und das Verhalten kann von jedem Benutzer individuell vorgegeben werden.

Interaktive Schnellkonfiguration

Bearbeiten

Die Zahl der angezeigten Zeichen und die Schriftgröße können nach Installation des Skriptes auf einer Spezialseite interaktiv konfiguriert werden. Auf anderen Seiten ist nach Darstellung der Wertetabellen in der oberen rechten Ecke ein Link auf diese Spezialseite vorhanden, das sie in einem neuen Browser-Tab oder -Fenster öffnet.

Für das Portlet-Link kann nur die Anzeige aktiviert oder deaktiviert werden.

Konfiguration über JavaScript

Bearbeiten

In die common.js etc. die folgenden Zeilen einfügen (möglichst vor mw.loader.load):

if ( typeof mw.browserStorageManager !== "object" ) {
   mw.libs.browserStorageManager   =  { };
}
mw.libs.browserStorageManager.key1 = value1;

Näheres siehe API.

Anwendungsobjekt und API

Bearbeiten

Vor der Einbindung kann ein Anwendungsobjekt wie folgt deklariert werden, auch in der Seite persönliche common.js:

if ( ! mw.libs.browserStorageManager ) {
   mw.libs.browserStorageManager  =  { };
}

Anschließend können gemäß der nachstehenden Tabelle Zuweisungen vorgenommen werden. Die statischen Zuweisungen von Werten wirken auf die Grundkonfiguration vor dem Laden der Bibliothek.

Vorgaben Bedeutung
Key Value  
portlet
  • boolean
  • object
  • true – Links in der Werkzeugbox zeigen (Vorgabe)
  • false – Kein Link zeigen
  • Objekt – Link in modifizierter Form zeigen; siehe addPortletLink()
portlet.scope "p-tb" ID des Containers
portlet.show "Browser-Storage-Manager" Linktitel
portlet.shortcut Tastaturcode
portlet.stick null ID des Container-Elements, vor dem einsortiert werden soll.
key 65100 (%) Prozentuale Schriftgröße für die Darstellung (Vorgabe: 80)
max 101024 Zahl der angezeigten Zeichen für jedes Element (Vorgabe: 100).
Zeige die ersten Zeichen an und schneide dann ab. Werte können über eine Million Bytes umfassen.
API
fiat() Füge Tabellen in die momentane Seite ein oder aktualisiere alle.
fresh(about) Aktualisiere den Tabelleninhalt.
  • about – string, mit dem Bezeichner der Tabelle; einer von
    • "localStorage"
    • "sessionStorage"
    • "cookies"

Rückgabewert: Array mit Zuweisungen und (verkürzten) Werten: { id, n, v }

Beispiel:

if ( typeof mw.libs.browserStorageManager !== "object" ) {
   mw.libs.browserStorageManager  =  { };
}
mw.libs.browserStorageManager.portlet = false;

Nutzung außerhalb eines Wiki-Projekts

Bearbeiten

Der Quellcode kann auch mit anderen Mitteln in jedes HTML-Dokument jeder Domain geladen werden. Eine Manipulation ist dann nicht möglich; jedoch werden die Daten gezeigt in der Fehlerkonsole oder vergleichbaren Meldungs-Oberflächen.

Codes und Stammseite

Bearbeiten

Die Stammseite ist en:User:PerfektesChaos/js/browserStorageManager mit:

Quellcode
ResourceLoader
  • ext.gadget.loadResourceFile für mw:Extension:Gadgets
  • Dependencies: user, user.options, mediawiki.user, mediawiki.util
Namensräume alle
mw.libs browserStorageManager