Я использую IndexedDB для хранения некоторых данных. Он работает, но если обновить страницу, я вижу: An IndexedDB transaction that was not yet complete has been aborted due to page navigation.
в консоли браузера Firefox (36.0.4). Я использую этот (локальный) файл для проверки:
<html>
<head><meta charset="UTF-8"></head>
<body>
<script>
var request = window.indexedDB.open("test_db", 2);
request.onupgradeneeded = function (event) {
request.result.createObjectStore("test_store");
};
request.onsuccess = function (event) {
var db = request.result;
var transaction = db.transaction(["test_store"], "readwrite");
var put = transaction.objectStore("test_store").put("key", "value");
transaction.oncomplete = function (event) {
console.log("Transaction complete");
};
};
</script>
</body>
</html>
Если я выполняю несколько транзакций, я получаю несколько ошибок. Если у меня есть обработчик onclick
, который выполняет транзакцию, и я нажимаю ее несколько раз, обновление выводит одну ошибку для каждой транзакции, которую я сделал в прошлом.
Все это заставляет меня думать, что мои транзакции не очищаются. Что мне нужно сделать, чтобы завершить транзакцию?
Вызывается обработчик My oncomplete
. Обновляясь несколько раз, консоль браузера выглядит следующим образом:
"Transaction complete" test.html:16:1
An IndexedDB transaction that was not yet complete has been aborted due to page navigation. test.html:13:0
"Transaction complete" test.html:16:1
An IndexedDB transaction that was not yet complete has been aborted due to page navigation. test.html:13:0
"Transaction complete" test.html:16:1
Страница тестирования (Ctrl-Shift-J, чтобы открыть консоль, затем Ctrl-R для обновления показывает ошибку):