Note

iOS17以降のSafariでは主要なクエリパラメータ以外除外される。 サイトを正常に動作させるためにプライベートモードを検知してユーザーに知らせたい。

以下のパッケージで検知することができた。

GitHub - Joe12387/detectIncognito: JavaScript detection of Incognito & other private browsing modes on Chrome, Edge, Safari, Brave, Firefox, Opera and MSIE.

detectIncognito().then((result) => {
  console.log(result.browserName, result.isPrivate);
});

resultbrowserNameisPrivateの値に合わせて各種処理を変更する。


上記の場合iOS上の各ブラウザはSafari同様、Webkitを利用しているためSafariと検出されてしまう。 以下の条件を追加することで、iOS上のその他ブラウザを判別できる。

var crios = !!navigator.userAgent.match(/crios/i);