JavaScript localStorage объект поврежден в IE11 на Windows 7
localStorage
Объект в Internet Explorer 11 (сборка Windows 7) содержит строковые представления определенных функций вместо собственных вызовов, как и следовало ожидать.
Это только нарушает ванильный JavaScript, и сайты вроде JSFiddle не имеют проблем с этим кодом, но я подозреваю, что это потому, что естьlocalStorage
полифилы в месте, которые исправляют это.
Возьмите этот код HTML-страницы, например:
<!DOCTYPE html>
<script>
localStorage.setItem('test', '12345');
alert(localStorage.getItem('test'));
localStorage.clear();
</script>
Это прекрасно работает во всех моих установленных браузерах, кроме IE11. Произошла ошибка в первой строкеSCRIPT5002: ожидаемая функция».
Взгляните на то, что типsetItem
функция на самом деле находится в консоли инструментов разработчика IE, утверждает, что это строка ...?
typeof localStorage.setItem === 'string' // true
Распечатка строки дляsetItem
отображает следующее:
"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;
}"
Как ни странно, не все функции были заменены на строки, например, соответствующиеgetItem
Функция действительно является функцией и работает, как и ожидалось.
typeof localStorage.getItem === 'function' // true
Изменение режима документа (эмуляция) на 10 или 9 по-прежнему не решает проблему и приводит к одной и той же ошибке. Изменение режима документа на 8 дает следующую ошибку 'Объект не поддерживает это свойство или методчто ожидается, так как IE8 не поддерживаетlocalStorage
.
Кто-нибудь еще имеет такую же проблему с IE11 на Windows 7, гдеlocalStorage
объект кажется «сломанным / поврежденным»?