Nach einer Beschwerde von einem unserer Benutzer und einige Tests läuft Firefox 15 und 16 (und wahrscheinlich ältere Version) machen es so, wenn Sie Cookies deaktivieren Sie auch deaktivieren lokaler Speicher. Sie können nicht einmal einen polyfill dafür schaffen, wie, wenn Sie versuchen, den Zugriff auf window.localStorage
Sie Error: The operation is insecure.
Lösung für Firefox Benutzer deaktivieren Cookies und damit localStorage - Polyfill nicht möglich
Werfen einen Versuch fangen bekommen Sie sehen lassen prüfen, ob es deaktiviert ist, aber werden Sie die Variable mit Ihrer eigenen Lösung nicht zulassen ersetzen . Die folgende schnelle polyfill wird nicht funktionieren, weil FF ignoriert die variable Einstellung und den gleichen Fehler werfen, wenn sie versuchen, darauf zuzugreifen:
try{
window.localStorage;
}catch(err){
window.localStorage = {
getItem: function(k){
return this.k;
},
setItem: function(k,v){
this.k = v;
}
};
}
Die einzige Lösung, die „fake“ localstorage auf eine andere Variable zu sein scheint zu bewegen, aber dies würde nervig sein, da wir viel Code und eine js-lib haben, die auf den Zugriff auf diese Variable angewiesen sind. Irgendwelche Lösungen?
Bearbeiten: Es ist nicht optimal, nur eine Warnmeldung anzuzeigen, um den Benutzern mitzuteilen, dass Cookies erforderlich sind. Wenn Besucher die Website nur ansehen und sich nicht anmelden möchten, benötigen sie wirklich keine Cookies. Aber als backbone.js Anwendung und Weitergabe von vielen Daten, speichern wir Sachen in localStorage ziemlich viel.
Wenn Sie überprüfen können, ob es deaktiviert ist, öffnen Sie einfach eine Warnung oder etwas, dass sie Cookies für Ihre Website aktivieren müssen. – MrOBrian
Danke MrObrian, ich habe das gemacht und gebe ein div mit der Nachricht ein, aber es wäre optimal für die localStorage, nur als Schlüssel/Wert-Speicher zu arbeiten, der nicht persistiert, da dies der Benutzer wünscht. –
"aber wäre optimal, damit localStorage nur als Schlüssel/Wert-Speicher funktioniert, der nicht persistiert hat" warum nicht einfach ein einfaches js-Array in diesem Fall verwenden? –