这是一个奇怪的情况,但我想显示一条消息,它告诉indexedDB
是否不受支持,或者它是否由于处于私有模式而被删除(是的,ie10+/edge在私有模式下删除indexedDB
,疯狂吗?)
我认为找到了一种不用做疯狂的UA嗅探或documentMode
攻击的方法,我认为这是可行的。
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
我认为没有其他浏览器支持pointerEvent
,同时也没有indexedDB
,这可能产生错误的消息。
你觉得这个怎么样?好还是坏?有什么建议吗?如果您可以在浏览器中测试此功能是否有效(我没有Windows),这将有所帮助。
发布于 2016-05-07 06:26:49
为什么不列入黑名单呢?如果您真的只是想向用户发布一条消息,说您的浏览器不支持某些内容,那么为什么不直接检查一下indexedDB是否可用,如果它没有发布类似的内容:
"IndexedDB只支持Chrome24.0、Firefox16.0、IE 10/Edge、Opera 15和Safari7.1或更高版本。它也可能无法在某些“私有”模式浏览器中工作。请升级您的浏览器以使用我们网站的全部功能。“
通过这种方式,您可以避免大量的浏览器检测尝试(浏览器实现跨兼容性后很可能会中断),并为用户提供下一步可以做什么的操作(尝试不同的浏览器,升级,而不是私有模式,等等)。
https://codereview.stackexchange.com/questions/127750
复制相似问题