HTML5 Ipad Safari(8.1 版)不支持读取数据的 Indexeddb 命令

HTML5 Indexeddb commands to read the data is not supporting in the Ipad Safari (version 8.1)

查询说明:-

这个问题特别针对我在 Ipad Safari 8.1 中读取 indexeddb 数据时遇到的问题。 我能够创建 Indexeddb 并将数据插入其中。但无法在 Ipad safari 中读取相同内容。

下面是我试过的代码格式- 1. 使用游标

var database = window.indexedDB.open(databaseName);
if (database) {
            database.onsuccess = function (event) { 
                var transaction =     event.currentTarget.result.transaction(ObjectStoreName, "readonly");
                var objectStore = transaction.objectStore(ObjectStoreName);
                var index = objectStore.index(“IndexName”);

var request = index.openCursor(“Search_Keyword”);    // Cursors not working. Getting null here.
                request.onsuccess = function (event) {
                        var cursor = event.target.result;
                        if (cursor) {
                            var abc=cursor.value.ColumnName;
}
};

                request.onerror = function (event) {
                    alert(‘Error’);  // It is strange that, I never got any error relating to the way used to read the indexeddb data.
                };
  1. 使用获取方法。

    var 数据库 = window.indexedDB.open(数据库名称);

        if (database) {
            database.onsuccess = function (event) { 
                var transaction = event.currentTarget.result.transaction(ObjectStoreName, "readonly");
                var objectStore = transaction.objectStore(ObjectStoreName);
                var index = objectStore.index(“IndexName”);
                var processCompelted = false;
                var request = index.get(TableIndex);
                request.onsuccess = function (event) {
                    alert('index.get is working');                               // able to come inside
                    alert(event);              // returns request object
                    alert(event.target);  //returns null
                    alert(event.target.result); //getting null value
                    alert(request);          // returns request object
                    alert(request.result);  //getting null value
                };
                request.onerror = function (event) {
                    alert(‘Error’);  // It is strange that, I never got any error relating to the way used to read the indexeddb data.
                };
    

请告诉我有什么方法可以在 ipad Safari 浏览器中从 indexeddb 中读取数据。 或者如果我在编写上面的代码时有任何错误,请告诉我。

您确定要get的记录在获取之前已经存储成功了吗?

似乎 indexedDB 在 Safari 移动版中的实现有问题 (http://caniuse.com/#search=indexeddb),并且当它无法存储记录时不会抛出错误...

因此,在您的情况下,也许您的 get 已成功执行,但 return 什么也没有,因为没有存储任何记录。

这里 (http://www.raymondcamden.com/2014/9/25/IndexedDB-on-iOS-8--Broken-Bad) 是一些使用 Safari Mobile 进行的测试,显示了这些错误。他也给出了如何使这项工作的答案。解决方案是自己创建 id 并在插入记录时强制使用它。阅读文章了解更多信息。