2014-11-05 34 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