Индексированная БД не записывает данные в Firefox, но записывает в Chrome - PullRequest
0 голосов
/ 27 февраля 2020

Следующий код 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;
};

}

...