JavaScript localStorage-Objekt in IE11 unter Windows 7 beschädigt
DaslocalStorage
Das Objekt in Internet Explorer 11 (Windows 7 Build) enthält Zeichenfolgendarstellungen bestimmter Funktionen anstelle der erwartungsgemäßen nativen Aufrufe.
Dies bricht nur mit Vanille-JavaScript und Websites wie JSFiddle haben kein Problem mit diesem Code, aber ich vermute, es liegt daran, dass es gibtlocalStorage
Polyfills an der richtigen Stelle.
Nehmen Sie diesen HTML-Seitencode zum Beispiel:
<!DOCTYPE html>
<script>
localStorage.setItem('test', '12345');
alert(localStorage.getItem('test'));
localStorage.clear();
</script>
Dies funktioniert mit Ausnahme von IE11 in allen meinen installierten Browsern einwandfrei. In der ersten Zeile ist ein Fehler aufgetreten. 'SCRIPT5002: Funktion erwartet'.
Werfen Sie einen Blick auf welche Art dersetItem
Funktion ist eigentlich in der IE Developer Tools-Konsole, heißt es, es ist eine Zeichenfolge ...?
typeof localStorage.setItem === 'string' // true
Die Zeichenfolge für ausdruckensetItem
zeigt Folgendes an:
"function() {
var result;
callBeforeHooks(hookSite, this, arguments);
try {
result = func.apply(this, arguments);
} catch (e) {
callExceptHooks(hookSite, this, arguments, e);
throw e;
} finally {
callAfterHooks(hookSite, this, arguments, result);
}
return result;
}"
Seltsamerweise wurden nicht alle Funktionen durch Zeichenfolgen ersetzt, z. B. die entsprechendengetItem
Funktion ist in der Tat eine Funktion und funktioniert wie erwartet.
typeof localStorage.getItem === 'function' // true
Das Ändern des Dokumentmodus (Emulation) auf 10 oder 9 behebt das Problem weiterhin nicht und beide führen zu demselben Fehler. Wenn Sie den Dokumentmodus auf 8 ändern, wird der folgende Fehler ausgegeben:Objekt unterstützt diese Eigenschaft oder Methode nicht'was erwartet wird, da IE8 nicht unterstütztlocalStorage
.
Hat jemand anderes das gleiche Problem mit IE11 unter Windows 7 wo dielocalStorage
Objekt scheint 'kaputt / korrupt'?