为什么 Internet Explorer 11 没有检测到 indexedDB

an *_*wig 2 internet-explorer indexeddb

我正在尝试使用 indexedDB 实现一个简单的网络应用程序,并使用以下代码片段来检测浏览器兼容性:

if(!window.indexedDB) {
   alert("Your browser does not support indexedDB.");
}
Run Code Online (Sandbox Code Playgroud)

在 Chrome 中运行时,它不会打开警报框(如预期),但在 IE 中运行时,会弹出警报框。我认为这只是一个蹩脚的 Internet Explorer 版本,所以我检查了一下。是11。我去http://caniuse.com看支持什么版本,支持IE 11。出了什么问题?我是否使用错误的代码来检测 indexedDB?

Lan*_*ard 6

IE11 确实支持 IndexedDB 并且您提供的代码看起来合理,所以如果没有出现警报,那么一定有其他因素。您在环境方面没有提及太多,因此需要注意以下几点:

  • 如果这是通过HTTP 或 HTTPS加载的公共网页,则很可能您不是在边缘模式下加载页面,因为您可能使用了不在边缘模式(以前​​称为标准模式)下呈现的 DOCTYPE。如果您不确定这意味着什么,请确保您网页的第一行是<!doctype HTML>。(关于使用 F12 工具验证文档的提示是一个很好的提示。)

  • 如果此网页在您的本地网络(包括您的本地硬盘驱动器)上运行,则该页面可能正在以兼容性视图加载。您想添加一个 x-ua 兼容的标头,其中"content="ie=edge".

  • 另一种可能性是,由于本地组策略设置和/或其他环境因素,IndexedDB 可能被禁用。这很难预测,但一种应对方法可能是尝试使用声称可以在完全不同的环境中工作的代码来测试该功能,例如连接到某个其他环境的 PC,例如您的家庭网络。

不确定此时该建议什么,但(希望)这里有一些有用的东西。

希望这可以帮助...

——兰斯