Safari ではプライベートブラウジング時に SessionStorage/LocalStorage に書き込めない


正確には QUOTA_EXCEEDED_ERR 例外が発生する。

とりあえず以下のような関数を作って、判定すればよいのではないかと。

※ 9/8 コメントを受けて、コードを一部修正。

function isLocalStorageSupported() {
  if (!window.sessionStorage) return false;

  var testKey = 'test';
  try {
    window.sessionStorage.setItem(testKey, '1');
    window.sessionStorage.removeItem(testKey);
    return true;
  } catch (error) {
    return false;
  }
}