локальное хранилище в IE9 сбой при доступе к веб-сайту непосредственно из файловой системы
Оба window['localStorage']
операторов window['localStorage']
и window.localStorage
не определены при доступе к url-файлу: /// C: /index.html ”
Является ли localStorage недоступным при запуске веб-сайтов в файловой системе?
- Как просматривать или редактировать localStorage
- Где хранится sessionStorage и localStorage?
- Что происходит, когда localStorage заполнен?
- Когда localStorage очищается?
- Как проверить, установлен ли элемент хранения?
PS. Я запускаю веб-сайт на телефоне Windows 7 с веб-сайтом в изолированном хранилище.
Да, IE9 не поддерживает localStorage для локальных файлов. Не в какой-либо официальной документации, которую я могу найти, но та же проблема описана в этом блоге .
Вам придется либо размещать веб-сайт извне, либо найти какой-либо другой метод сохранения данных. [Поддержка локального хранилища в стиле HTML5 по-прежнему остается в бета-версии во многих браузерах. Особенно для страниц в локальной файловой системе.]
Вы можете попробовать поведение userdata, которое является пред-W3C-решением, разработанным Microsoft для Internet Explorer. Не уверен, что он поддерживает локальные файловые системы. Ссылки:
- http://www.javascriptkit.com/javatutors/domstorage2.shtml
- http://msdn.microsoft.com/en-us/library/ms531424(VS.85).aspx
Рекомендации:
В качестве дополнительного бонуса 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
Мне нравится первый, потому что он меньше и проще.