(...) Ich hätte kein schlechtes Gewissen zu kommunizieren, dass das Skript erst letztendlich erst wirklich in document.onload zur Verfügung steht.
Ja, das wäre möglich. Ein schlechtes Gewissen hätte ich dennoch. Ich weiß nicht, ob ein erzeugtes script-Element den load-Event verzögert. Ich fürchte nicht, also wäre es noch nicht einmal sicher, zu sagen, dass spätestens beim window.load-Event die Verwendung des Scriptes möglich ist.
Bei heutigen Anwendungen will eigentlich niemand auf window.onload warten, so ziemlich jedes moderne Script verwendet sinnigerweise DOM-ready-Events. Wenn ich auf window.onload abzielen würde, wären die Anwendungsmöglichkeiten sehr begrenzt. Gerade bei dem Script soll es möglich sein, z.B. Benutzereinstellungen wie Schriftgröße und Alternativstylesheet zu speichern. Die will ich so schnell wie möglich auslesen und setzen, nicht erst window.onload abwarten.
Mich irritiert Dein „auch wenn's später nicht verwendet wird“.
Der Zusatz war Unsinn, sehe ich gerade.
Das Script muss natürlich nur nachgeladen werden, wenn der Serializer JSON ist und dieser nicht nativ unterstützt wird.
Derzeit hast Du doch nur JSON als Serialisierer, alle Deine Möglichkeiten zum Speichern verwenden JSON
Ja, nachdem ich auf den Trichter gekommen bin, dass sessionStorage auch nur Strings speichert. ;)
und ein anderes Text-Format für Datenstrukturen steht nicht auf dem Programm.
JSON ist nicht der Weisheit letzter Schluss, z.B. kann es keine Funktionsobjekte serialisieren, was im Prinzip in allen Browsern funktioniert. Andere Scripte mit demselben Zweck benutzen nicht JSON, sondern reizen ECMAScript Object-Literale aus und können dadurch viel mehr übertragen. Daür haben sie z.T. schlechte oder lückenhafte Serialisierungsroutinen und können nicht Gebrauch von nativen Browserfunktionen machen.
Ich hätte das Initialisieren des Skriptes durchaus etwas imperativer gestaltet mit einem öffentlichen Wrapper um eine imperativ auszuwählende Storage-Implementierung anstatt eines dafür nötigen größeren Init-Objektes.
Du meinst, man sollte ssw.init() aufrufen müssen, anstatt dass es sich automatisch initialisiert und die Implementierung mit forceImplementation gesetzt/geändert werden kann?
Mathias