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.
};
使用获取方法。
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 并在插入记录时强制使用它。阅读文章了解更多信息。
查询说明:-
这个问题特别针对我在 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.
};
使用获取方法。
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 并在插入记录时强制使用它。阅读文章了解更多信息。