Question

Je développe une application qui doit utiliser indexedDB pour stocker certaines informations hors ligne, mais dans le cas de Safari, elle n'est pas (encore) disponible, je dois donc utiliser webSQL.

j'utilise déjà ce adaptateur pour indexedDB, avec entrez la description du lien ici polyfill pour le cas d'un navigateur qui ne prend pas en charge indexedDB.

Malheureusement, j'ai un problème majeur avec Shim, par exemple sur iOS Safari et Safari, lorsque, dans mon application, je dois récupérer des données dans la base de données pour voir si elles existent, cela me renvoie des erreurs.

Comme ceci et cela :

throwDOMException@http://localhost/Dev/Websites/myWebsite/js/libs/IndexedDBShim.js:40:16

Error: Assertion Failed: 0: The operation failed because the requested database object could not be found. For example, an object store did not exist but was being opened

Et cela est dû au fait qu'ils utilisent une sorte de hack pour renvoyer une valeur, et même dans le polyfill, ils disent ceci :

// The IndexedDB Specification needs us to return an Object Store immediatly, but WebSQL does not create and return the store immediatly // Hence, this can technically be unusable, and we hack around it, by setting the ready value to false

Ma question est donc la suivante : avec l'adaptateur indexedDB, puis-je ajouter un autre adaptateur pour webSQL en parallèle ?

Était-ce utile?

La solution

Je pense que votre meilleure option serait de choisir le bon adaptateur au moment de l'exécution (est-ce que vous entendez par parallèle ?).Cela devrait être aussi simple que ceci :

var App = Ember.Application.create();
App.deferReadiness();

if (window.indexedDB) {
    App.ApplicationAdapter = IndexedDBAdapter;
} else {
    App.ApplicationAdapter = WebSQLAdapter;
}

App.advanceReadiness();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top