локальное хранилище в IE9 сбой при доступе к веб-сайту непосредственно из файловой системы

Оба window['localStorage'] операторов window['localStorage'] и window.localStorage

не определены при доступе к url-файлу: /// C: /index.html ”

Является ли localStorage недоступным при запуске веб-сайтов в файловой системе?

PS. Я запускаю веб-сайт на телефоне Windows 7 с веб-сайтом в изолированном хранилище.

Да, IE9 не поддерживает localStorage для локальных файлов. Не в какой-либо официальной документации, которую я могу найти, но та же проблема описана в этом блоге .

Вам придется либо размещать веб-сайт извне, либо найти какой-либо другой метод сохранения данных. [Поддержка локального хранилища в стиле HTML5 по-прежнему остается в бета-версии во многих браузерах. Особенно для страниц в локальной файловой системе.]

Вы можете попробовать поведение userdata, которое является пред-W3C-решением, разработанным Microsoft для Internet Explorer. Не уверен, что он поддерживает локальные файловые системы. Ссылки:

  1. http://www.javascriptkit.com/javatutors/domstorage2.shtml
  2. http://msdn.microsoft.com/en-us/library/ms531424(VS.85).aspx

Рекомендации:

  1. https://bugzilla.mozilla.org/show_bug.cgi?id=507361
  2. https://stackoverflow.com/a/7377302/1122351

В качестве дополнительного бонуса IE пошатнет любую попытку обойти эту проблему.

Разумным было бы заглушить свой собственный манекен localStorage, чтобы по крайней мере ваша вещь не сломалась при загрузке из локальной файловой системы:

 if (document.all && !window.localStorage) { window.localStorage = {}; window.localStorage.removeItem = function () { }; } 

Какие-нибудь догадки о том, какое предупреждение (window.localStorage) появится после запуска? Вы догадались «неопределенные» ???

Спасибо, IE! Теперь на самом деле есть один уродливый хак, который мы можем сделать, чтобы сделать эту работу. Поскольку IE не позволит вам повторно использовать зарезервированное слово «localStorage», мы просто переместим все это в другое место:

 window.localStorageAlias = window.localStorage; if (document.all && !window.localStorage) { window.localStorageAlias = {}; window.localStorageAlias.removeItem = function () { }; } 

Итак, теперь, где бы вы ни говорили, localStorage [‘beans’] = 7, вы просто делаете localStorageAlias ​​[‘beans’] = 7, и вы снова в бизнесе. Естественно, что IE не будет хранить что-либо между сеансами при работе из локальной файловой системы. Но, по крайней мере, это не сломается.

Для дополнительного кредита вы можете исправить вышеуказанный код, чтобы поменять местами в той или иной форме постоянное хранилище, которое IE будет использовать при локальном запуске.

У меня такая же проблема, и я нашел два плагина с резервными решениями:

https://github.com/andris9/jStorage

Резервные решения для хранилища HTML5

Мне нравится первый, потому что он меньше и проще.

Interesting Posts

Как обрабатывать NumberFormatException с Gson при десериализации JSON-ответ

Двухэтапный поиск – требуется объяснение

Java JDBC – Как подключиться к Oracle с использованием Service Name вместо SID

Предупреждение о устаревании при использовании has_many: через: uniq in Rails 4

Постоянное соединение с БД – да или нет?

Как отслеживать экземпляры classов?

Как запретить вход в систему для удаленного рабочего стола, когда пользователь регистрируется локально?

Что такое ошибка «Неверная инструкция: 4» и почему «-mmacosx-version-min = 10.x» исправить?

В MySQL я могу скопировать одну строку для вставки в ту же таблицу?

Как сделать о: пустую страницу черным или любым другим цветом в Firefox?

Ошибка выполнения команды ‘ant’ в Mac OS X 10.9 Mavericks при создании Android с помощью PhoneGap / Cordova

Внешний вид значков Windows 10 изменен

Как определить, что такое замораживающий проводник?

Как преобразовать json в xml с помощью xslt

Что такое бар Charms?

Давайте будем гением компьютера.