読者です 読者をやめる 読者になる 読者になる

みかづきブログ その3

3ヶ月つづけてみました。

iPhoneのSafari(mobile Safari) にて localStrageにアクセスできないときに疑うべきこと

プライベートブラウズになっている

Safariには履歴を残さないモード(プライベートブラウズ)という機能が備わっており、プライベートブラウズモードの状態でlocalStrageに書き込みを行おうとするとエラーを吐きます。
有名ドコロだと、少年ジャンプ+にアップされている漫画をプライベートブラウズで読もうとした時、エラーで止まってしまいます。おそらく何ページまで読んだかをlocalStrageに保持しているのでしょう。

plus.shonenjump.com

自分がプライベートブラウズをつかっているかどうかはSafariのUIの色を観れば一目瞭然です。

f:id:kimizuka:20160414094326j:plain

黒っぽくなっていたらプライベートブラウズをつかっています。

f:id:kimizuka:20160414094506j:plain

新規タブを開くときに左下のプライベートボタンを押すことによって切り替えることができます。


Cookieをブロックしている

設定 > Safari > Cookieをブロック > 常にブロック を設定するとlocalStrageにもアクセスできなくなります。

f:id:kimizuka:20160414094334j:plain

コンテンツブロックでCookieをブロックした場合もアクセスできなくなるかと思い、1BlockerでCookieをブロックしてみましたが、その場合はlocalStrageにアクセスはできました。

1Blocker - Block ads, tracking scripts, anything

1Blocker - Block ads, tracking scripts, anything

  • Salavat Khanov
  • ユーティリティ
  • 無料


対策

localStrageにアクセスしたいときは実装時にtrycatchをつかうなどしてエラーが起こっても止まらないようにしておいたほうが良いと思います。

try {
    localStorage.setItem("msg", "LOCAL!"); // 書き込み
} catch(e) {
    // エラー時の処理
}

DEMO

localStrage、sessionStorageにアクセスするだけのページをつくりまいた。
アクセスできるかどうかのテストする際にどうぞ。

try {
    sessionStorage.setItem("msg", "SESSION!");
    alert(sessionStorage.msg);
} catch(e) {
    alert(e);
}

try {
    localStorage.setItem("msg", "LOCAL!");
    alert(localStorage.msg);
} catch(e) {
    alert(e);
}

f:id:kimizuka:20160414100403g:plain
http://jsrun.it/kimmy/wzhb