Подтвердить что ты не робот

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

Оба утверждения window['localStorage'] и window.localStorage

являются undefined при доступе к URL-адресу:///C:/index.html

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

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

4b9b3361

Ответ 1

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

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

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

Литература:

Ответ 2

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

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

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

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

Спасибо, 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 фактически будет использовать при запуске локально.