2014-11-05 38 views
0

我有一个基于IndexedDB的应用程序。以前很容易在IndexedDB上进行功能检测 - 只要看看是否定义了window.indexedDB即可。然而,两件事情最近已经改变了:功能检测有问题的IndexedDB实现?

  1. 野生动物园用很破IndexedDB的支持发布
  2. 我重写我的应用程序使用的功能(复合索引和multientry索引),IE浏览器不支持的一部分

因此,现在我需要一些更细粒度的功能检测,以向Safari和IE用户显示合理的错误消息。

我可以想象,测试IE的缺失功能不会太困难,因为至少这些问题是有记录的。但对于Safari来说,存在多个错误,我不知道它在任何地方记录得如何。哎呀,我甚至没有任何可以运行Safari的Apple设备。而且,如果将来某些其他浏览器发布错误的IndexedDB实现呢?

有没有人想过或解决过这些问题?似乎我应该有一些标准的IndexedDB功能检测库,但我找不到任何东西(Modernizr的IndexedDB的东西似乎不够)。

回答

2

对于IE,您可以查看:IDBKeyRange.only([1]),这会在IE上引发异常DataError

对于Safari,我做了一些useragent嗅探,因为我找不到检查方法(我可以创建一个dummyDb并检查插入是否会删除我的其他值),但这会异步,比较困难)..

+0

这对IE来说是个好主意!你能分享你如何检测Safari吗? – dumbmatter 2014-11-08 05:47:36

+0

我相信它是这样的,但它绝对不是未来的证明: var matches = navigator.userAgent.match(/(iPad | iPhone);。* OS(\ d +)_(\ d +)/);如果(matches && matches.length == 4){ var iOSVersion = parseFloat(matches [2] +“。”+ matches [3]); 如果(iOS版本> = 8 {破损索引DB } – 2014-11-08 17:07:23