【问题标题】:How to check if ios is using private browsing如何检查ios是否正在使用隐私浏览
【发布时间】:2012-10-01 00:42:36
【问题描述】:

我的一个 jquery 插件出现问题,并且在 ios 中打开隐私浏览时出现问题。

有没有办法检查这个?

【问题讨论】:

  • 顺便说一句:我的意见是网络应用程序不应该能够区分,如果可以的话,它是一个浏览器错误。 (这显然不能解决你的问题;我想知道是什么原因。)

标签: javascript jquery ios safari


【解决方案1】:

在私有模式下用户不能使用本地存储试试这个:

var storageTestKey = 'sTest',
    storage = window.sessionStorage;

try {
  storage.setItem(storageTestKey, 'test');
  storage.removeItem(storageTestKey);
} catch (e) {
  if (e.code === DOMException.QUOTA_EXCEEDED_ERR && storage.length === 0) {
    // private mode
  } else {
    throw e;
  }
}

【讨论】:

  • 在 iOS 上无法判断,但在 Chrome 中不起作用。这是一个小提琴:jsfiddle.net/n49yQ
  • 这是因为 Safari 和 Chrome 在私人会话期间处理存储的想法不同。在“隐身”模式下,Chrome 仍将允许临时会话存储,而 Safari 则完全禁用访问。我更喜欢 Chrome 的实现,因为 HTML5 应用程序仍然能够缓存它们的文件/图像。
  • @Kos 你的 jsfiddle 不再工作了。这是一个有效的小提琴:jsfiddle.net/harianus/aueb9u74 它会在检测到 Safari Prived 模式时发出警报。
【解决方案2】:

我在 GitHub 找到了一个 Answear 并对其进行了测试:正在使用 IOS 11!

var isPrivate = false;
try {
  window.openDatabase(null, null, null, null);
} catch (_) {
  isPrivate = true;
}
alert((isPrivate ? 'You\'re' : 'You aren\'t')  + ' in private browsing mode');

【讨论】:

  • 在 IOS 13.0 中似乎不再工作,但奇怪的是,在 IOS 13.0.1 中又可以了。
猜你喜欢
  • 2015-10-23
  • 2017-05-20
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-04
  • 1970-01-01
相关资源
最近更新 更多