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 объект кажется «сломанным / поврежденным»?

Ответы на вопрос(3)

Ваш ответ на вопрос