У меня проблемы с выполнением транзакций базы данных на устройствах IOS.Если пользователь не трогает телефон, все работает как ожидалось.Если пользователь нажимает / прокручивает / касается экрана, некоторые транзакции напрямую вызывают свой successCallback, даже не вызывая реальный обратный вызов транзакции.
Упрощенный пример здесь: http://jsfiddle.net/Tk9rv/
Чтобы проверить, просто откройтеhttp://jsfiddle.net/Tk9rv/embedded/result/ в вашем мобильном сафари на IOS и не трогайте устройство во время загрузки.Вы увидите список генерируемых отладочных сообщений, выглядящий следующим образом:
database is running
table will be cleared
store method called for '10'.
about to insert '10'.
transaction successful for '10'
store method called for '9'.
about to insert '9'.
transaction successful for '9'
store method called for '8'.
about to insert '8'.
transaction successful for '8'
[...]
Теперь перезагрузите страницу и во время загрузки прокрутите и коснитесь случайным образом.Вы увидите, что некоторые сообщения «о том, чтобы вставить ...» отсутствуют.
database is running
table will be cleared
store method called for '10'.
about to insert '10'.
transaction successful for '10'
store method called for '9'.
about to insert '9'.
transaction successful for '9'
store method called for '8'.
transaction successful for '8' <-- WHERE IS MY "about to insert '8'." ???
store method called for '7'.
about to insert '7'.
transaction successful for '7'
[...]
Это потому, что транзакция CallCallback полностью пропущена!Но почему?И ПОЧЕМУ срабатывает successCallback вместо errorCallback?
[Это упрощенный пример, пожалуйста, не говорите мне не делать этот набор setTimeout.В реальном мире данные загружаются асинхронно, а затем вставляются ... :)]
Я думаю, что здесь есть похожая проблема Транзакция HTML5 Web SQL отсутствует в действии , но естьнет ни решения, ни намека.
Есть идеи?Я застрял ... Спасибо!