iOSでプライベートブラウズがオンのとき、localStorageが使えない

iOSでプライベートブラウズ(ブラウザでの閲覧履歴を残さない機能)がオンのとき、localStorageのsetItemを使うとエラーが出てJavaScriptが止まってしまう現象に遭遇しました。

2019.07.29追記: iOS11からシークレットモードでもlocalStorageが使えるようになっているようです。

サンプルコード

var storageKey = 'keyName';
var storageData = localStorage.getItem(storageKey);
alert(storageData);

var saveData = 'value';
localStorage.setItem(storageKey, saveData);
alert('保存後のアラート');

localStorageが使えない場合のデモページ
サンプルページをiOSでプライベートブラウズがオンの状態で閲覧すると、setItemでJavaScriptが止まってしまうため、その後のalertが表示されません。
 

解決方法

try catch を使うことで回避できるようです。

JavaScript

var storageKey = 'keyName';
var storageData = localStorage.getItem(storageKey);
alert(storageData);

var saveData = 'value';
try {
	localStorage.setItem(storageKey, saveData);
} catch(e) {
	// setItemがうまくいかなかったとき(とりあえず空で問題なし)
	alert('setItemがうまくいかなかったとき');
}
alert('保存後のアラート');

対応後のデモページ
localStorageへの保存自体はできませんが、JavaScriptが止まってしまう問題は回避できました。
 

【参考サイト】

 

このエントリーをはてなブックマークに追加

関連記事

コメントを残す

メールアドレスが公開されることはありません。
* が付いている欄は必須項目です

CAPTCHA


コメントが承認されるまで時間がかかります。

2024年7月
 123456
78910111213
14151617181920
21222324252627
28293031