首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测ie10+和edge是否使用inPrivate模式

检测ie10+和edge是否使用inPrivate模式
EN

Code Review用户
提问于 2016-05-06 23:04:06
回答 1查看 709关注 0票数 1

这是一个奇怪的情况,但我想显示一条消息,它告诉indexedDB是否不受支持,或者它是否由于处于私有模式而被删除(是的,ie10+/edge在私有模式下删除indexedDB,疯狂吗?)

我认为找到了一种不用做疯狂的UA嗅探或documentMode攻击的方法,我认为这是可行的。

代码语言:javascript
运行
复制
if(!window.indexedDB && (window.PointerEvent || window.MSPointerEvent))
  document.body.innerHTML = "Can't use indexedDB because you are in private mode"
else if(!window.indexedDB)
  document.body.innerHTML = "Can't use indexedDB because you don't have it"
else
  document.body.innerHTML = "woho"
  // Other browser in private mode can block indexedb
  // but the message gets handled from db.onerror instead
  • IE/Edge是唯一在使用indexedDB模式时删除inPrivate的浏览器..?,因此这是一种检测私有模式的方法,但是您必须知道它是ie10+还是edge。
  • 因此,ie10是支持indexedDB的最新浏览器。
  • ie10+edge是唯一支持pointerEvent [caniuse]的浏览器。

我认为没有其他浏览器支持pointerEvent,同时也没有indexedDB,这可能产生错误的消息。

你觉得这个怎么样?好还是坏?有什么建议吗?如果您可以在浏览器中测试此功能是否有效(我没有Windows),这将有所帮助。

EN

回答 1

Code Review用户

发布于 2016-05-07 06:26:49

为什么不列入黑名单呢?如果您真的只是想向用户发布一条消息,说您的浏览器不支持某些内容,那么为什么不直接检查一下indexedDB是否可用,如果它没有发布类似的内容:

"IndexedDB只支持Chrome24.0、Firefox16.0、IE 10/Edge、Opera 15和Safari7.1或更高版本。它也可能无法在某些“私有”模式浏览器中工作。请升级您的浏览器以使用我们网站的全部功能。“

通过这种方式,您可以避免大量的浏览器检测尝试(浏览器实现跨兼容性后很可能会中断),并为用户提供下一步可以做什么的操作(尝试不同的浏览器,升级,而不是私有模式,等等)。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/127750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档