2012-12-29 34 views
8

在Firefox上打开一个IndexedDB的数据库,当我得到一个错误。此代码在Chrome中正常工作,但在Firefox中失败。无效状态误差索引Db的

<script type="text/javascript"> 
    var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB; 
    var request = indexedDB.open("TestDB", 1); 
</script> 

的JavaScript错误发生就行了indexedDB.open("TestDB", 1)

+0

这是什么浏览器失败?在Chrome /极光 – Bartek

+0

它打破了在FireFox – JIJIL

+0

退房https://developer.mozilla.org/en-US/docs/IndexedDB/IDBEnvironment一个很好的方法来检查针对不同浏览器支持正常工作。 – Bartek

回答

10

对于我来说,这个错误是由于在Firefox中的隐私设置。在首选项面板中将历史设置设置为“Firefox将:记住历史记录”,使IndexedDB可以正常工作。

+0

您的解决方案更令人满意。看一看在https://developer.mozilla.org/en-US/docs/IndexedDB/Basic_Concepts_Behind_IndexedDB限制部分 –

-2

IndexedDB的对象是窗口实例的方法,所以它必须是

<script type="text/javascript"> 
    window.indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB; 
var request = indexedDB.open("TestDB", 1); 
</script> 

在你的代码,是IndexedDB成为当地的功能。显然这不起作用。

+0

你让事情变得更糟。为什么本地功能不起作用? [函数是第一类公民在javascript](http://stackoverflow.com/a/61094/383793) –

+0

这些API函数(另一个是indexedDB.cmp)调用它们时应该绑定所有者对象实例。它们不是纯函数,尽管它们应该是因为我们没有使用任何实例变量(从用户的角度来看)。但从浏览器的角度来看,这些功能并不是纯粹的,由于安全检查,他们需要评估所有者实例对象。 –