Следующий код indexeddb работает в Chrome, но не в Firefox. В Firefox он создает индекс, но не добавляет данные из полей формы. Я пробовал браузерные префиксы, но безрезультатно. Не уверен, почему это работает в одном, а не в другом. Помощь очень ценится.
window.onload = function() {
function idbOK() {
return "indexedDB" in window;
}
if(!idbOK()) return;
let openRequest = indexedDB.open("trail_buddies", 1);
openRequest.onupgradeneeded = function(e) {
let thisDB = e.target.result;
if(!thisDB.objectStoreNames.contains("buddies")) {
let peopleOS = thisDB.createObjectStore("buddies",
{keyPath: "id", autoIncrement: true});
}
}
openRequest.onsuccess = function(e) {
db = e.target.result;
addBuddyBtn = document.getElementById("addbuddy");
readBuddies();
addBuddyBtn.onclick = function() {
addBuddy();
}
openRequest.onerror = function(e) {
alert("Error: " + e.target.error.name);
}
}
}
function addBuddy(e) {
let buddyName = document.getElementById("buddyname").value;
let buddyEmail = document.getElementById("buddyemail").value;
let transaction = db.transaction(["buddies"],"readwrite");
let store = transaction.objectStore("buddies");
let buddy = {
name: buddyName,
email:buddyEmail
}
let request = store.add(buddy);
request.onerror = function(e) {
alert("Cannot Add Trail Buddy. Error: " + e.target.error.name);
}
request.onsuccess = function(e) {
alert("Success: New Trail Buddy Added");
}
}
function readBuddies() {
let objectStore = db.transaction("buddies").objectStore("buddies");
let insertData = "";
objectStore.openCursor().onsuccess = function (event) {
let cursor = event.target.result;
if (cursor) {
insertData += "<tr><td>" + cursor.value.name + "</td><td><a href=mailto:'" + cursor.value.email + "'>" + cursor.value.email + "</a></td><td class='text-center'><i class='fa fa-trash fa-2x' aria-hidden='true'></i></td></tr>";
cursor.continue();
}
document.getElementById("insertpoint").innerHTML = insertData;
};
}