サイト制作に関するメモ書き

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

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が止まってしまう問題は回避できました。
 

【参考サイト】

 

コメントを残す

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

▲PAGE TOP