Мы столкнулись со странной ситуацией.Мы вызываем database.transaction(txCallback, txError, txSuccess)
, и если мы следуем за вызовом транзакции с помощью вызова alert()
, функция txSuccess
вызывается без вызова функции txCallback
.
Является ли это известнымошибка или задокументированное поведение с разумным объяснением?
Похоже, это происходит только в эмуляторе Ripple и в Google Chrome (на котором основан Ripple).Это не происходит в Safari, где он работает как ожидалось, используя alert
или console.log
.
Этот HTML-код хорошо демонстрирует ситуацию:
<html>
<head>
<script>
function dbalert() {
var db = window.openDatabase("test","1.0","test",1024*1024);
console.log("Next line should read: In transaction callback");
window.transactionCalled = false;
db.transaction(
function (tx) {
console.log("In transaction callback");
window.transactionCalled = true;
},
function (tx, err) {
console.error("ERROR");
console.log(err);
},
function () {
if (window.transactionCalled) {
console.log("Success callback: everything worked!");
} else {
console.error("Success callback: BUT TRANSACTION WAS NEVER CALLED");
}
}
);
/*****
* Change to FALSE to get this working.
*****/
if (true) {
alert("Ok, let's see what happened");
} else {
console.log("Ok, let's see what happened");
}
}
</script>
</head>
<body onLoad="dbalert();">
<div id="out">
</div>
</body>
</html>