私のウェブアプリでは、iOS Safari プライベート ブラウジングで JavaScript エラーが発生します。
JavaScript:エラー
未定義
QUOTA_EXCEEDED_ERR:DOM 例外 22:ストレージに何かを追加しようとしました...
私のコード:
localStorage.setItem('test',1)
ベストアンサー1
どうやらこれは仕様のようです。Safari (OS X または iOS) がプライベート ブラウジング モードの場合、localStorage
利用可能であるように見えますが、呼び出そうとするとsetItem
例外がスローされます。
store.js line 73
"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota."
何が起こるかというと、ウィンドウ オブジェクトは引き続きlocalStorage
グローバル名前空間で公開されますが、 を呼び出すとsetItem
、この例外がスローされます。 への呼び出しはすべてremoveItem
無視されます。
最も簡単な修正方法は (まだクロスブラウザでテストしていませんが)、関数を変更して、isLocalStorageNameSupported()
何らかの値を設定できることもテストすることだと思います。
https://github.com/marcuswestin/store.js/issues/42
function isLocalStorageNameSupported()
{
var testKey = 'test', storage = window.sessionStorage;
try
{
storage.setItem(testKey, '1');
storage.removeItem(testKey);
return localStorageName in win && win[localStorageName];
}
catch (error)
{
return false;
}
}