Hi!
Ich meckere mal ungefragt:
function localStorageSupported() {
try {
return 'localStorage' in window && window['localStorage'] !== null;
} catch (e) {
return false;
}
}
Hier würde doch reichen:
return !!window.localStorage;
Der reine Zugriff auf window.localStorage wirft m.W. keine Exception.
http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/#obj-eig
'localStorage' in window
alleine reicht natürlich auch.
http://aktuell.de.selfhtml.org/artikel/javascript/objektabfragen/#in
window['localStorage'] !== null;
scheint mir auch unnötig. Die Bracket-Notation macht keinen Unterschied zu window.localStorage. Und die Abfrage auf !== null ist eigentlich immer true, denn wann steht localStorage denn === null
?
Wenn man wirklich wissen will, ob sich mit localStorage auch Daten abspeichern lassen (Cookies können deaktiviert sein), sollte man einfach testweise etwas speichern und auslesen. Das wäre dann eine Feature-Abfrage, die neben Vorhandensein auch Funktionstüchtigkeit testet.
try {
var key = 'test', value = 'v';
localStorage.setItem(key, value);
var readValue = localStorage.getItem(key);
if (readValue !== value) return false;
localStorage.removeItem(key);
} catch (e) {
return false;
}
Hier ist try-catch ausnahmsweise nötig, weil setItem planmäßig eine Exception wirft, wenn Cookies deaktiviert sind.
Grüße
Mathias