[解決済み] Safariでhtml5 localStorageエラー。"QUOTA_EXCEEDED_ERR: DOM Exception 22: An attempt was made to add something to storage that exceeded the quota." と表示されます。
2022-06-22 03:49:20
質問
iosのサファリ・プライベートブラウジングで、私のウェブアプリケーションにjavascriptのエラーが発生しました。
JavaScript:エラー
未定義
QUOTA_EXCEEDED_ERR:DOM Exception 22:An attempt was made to add something to storage... (ストレージに何かを追加しようとしました。
私のコードです。
localStorage.setItem('test',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."
何が起こるかというと、window オブジェクトはまだ
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;
}
}
関連
-
親子コンポーネント通信を解決する3つのVueスロット
-
[解決済み] Access-Control-Allow-Originヘッダーはどのように機能するのですか?
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
OSSアップロードエラーを解決する: net::ERR_SSL_PROTOCOL_ERROR
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] setTimeout(fn, 0)が役に立つことがあるのはなぜですか?
-
[解決済み] ES6インポートで中括弧を使用するのはどのような場合ですか?
-
[解決済み] CSSは常にJavascriptより優先されるべきか?
-
[解決済み] JavaScriptでURLの#hashを確認する方法は?
-
[解決済み】QuotaExceededError: Dom exception 22: ストレージに何かを追加しようとしましたが、クォータを超過しています。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
親子コンポーネント通信を解決する3つのVueスロット
-
JavaScriptにおけるマクロタスクとミクロタスクの詳細
-
jsを使った簡単な照明スイッチのコード
-
vueが定義するプライベートフィルタと基本的な使い方
-
[解決済み】ERROR エラーです。スイッチのname属性が指定されていないフォームコントロールの値アクセッサがない
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
[解決済み] ローカルストレージとCookieの比較
-
[解決済み] ページ更新後も値を保持するJS変数を取得する方法は?重複