両方のステートメントwindow['localStorage']
およびwindow.localStorage
uRL「file:/// C:/index.html」にアクセスするときは未定義です
ファイルシステムでWebサイトを実行しているとき、localStorageは立ち入り禁止ですか?
PS。 IsolatedStorageでWebサイトをホストしているWindows 7の電話でWebサイトを実行しています。
はい、IE9はローカルファイルのlocalStorageをサポートしていません。私が見つけることができる公式ドキュメントにはありませんが、同じ問題は このブログで説明されています です。
外部でWebサイトをホストするか、データを保持する他の方法を見つける必要があります。 [とにかく、HTML5スタイルのローカルストレージのサポートは、多くのブラウザでまだベータ版です。特にローカルファイルシステムのページの場合。]
MicrosoftがInternet Explorer用に開発したW3C以前のソリューションであるuserdataの動作を試すことができます。ただし、ローカルファイルシステムをサポートしているかどうかは不明です。リンク:
参照:
追加のボーナスとして、IEは、この問題を回避するすべての試みを無効にします。
正気なことは、独自のダミーlocalStorageをスタブ化して、少なくともローカルファイルシステムからロードしたときに壊れないようにすることです。
if (document.all && !window.localStorage)
{
window.localStorage = {};
window.localStorage.removeItem = function () { };
}
それを実行した後にどのアラート(window.localStorage)がポップアップするかについての推測はありますか? 「未定義」と思いましたか???
ありがとう、IE!現在、これを機能させるために実行できる醜いハックが1つあります。 IEでは予約語「localStorage」を再利用できないため、全体を別の場所に移動します。
window.localStorageAlias = window.localStorage;
if (document.all && !window.localStorage)
{
window.localStorageAlias = {};
window.localStorageAlias.removeItem = function () { };
}
つまり、通常はlocalStorage ['beans'] = 7と言う場所であれば、localStorageAlias ['beans'] = 7を実行するだけでビジネスに復帰できます。当然、IEは実際にはstoreにはなりませんが、ローカルファイルシステムから実行している場合、セッション間には何もありませんが、少なくとも壊れることはありません。
追加のクレジットとして、上記のコードを修正して、ローカルで実行するときにIEが実際にseになる永続ストレージの何らかの形式でスワップするようにできます。
私は同じ問題を抱えており、フォールバックソリューションを備えた2つのプラグインを見つけました:
https://github.com/andris9/jStorage
最初の方が小さくてシンプルなので、もう1つ好きです。