11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je veux utiliser IndexedDB pour stocker des informations en offline comme une base de données.

J'ai consulté plusieurs sites sur le sujet, j'ai testé les tutoriaux en copiant le code fourni. Mais impossible de le faire fonctionner.

Voici un exemple de code récupéré sur le site du W3C, pour déclarer et créer une base "library":


var request = indexedDB.open("library");
 
request.onupgradeneeded = function() {
  // The database did not previously exist, so create object stores and indexes.
  var db = request.result;
  var store = db.createObjectStore("books", {keyPath: "isbn"});
  var titleIndex = store.createIndex("by_title", "title", {unique: true});
  var authorIndex = store.createIndex("by_author", "author");
 
  // Populate with initial data.
  store.put({title: "Quarry Memories", author: "Fred", isbn: 123456});
  store.put({title: "Water Buffaloes", author: "Fred", isbn: 234567});
  store.put({title: "Bedrock Nights", author: "Barney", isbn: 345678});
};
 
request.onsuccess = function() {
  db = request.result;
};


Ensuite un script pour récupérer un livre dans la bdd

var tx = db.transaction("books", "readonly");
var store = tx.objectStore("books");
var index = store.index("by_title");
 
var request = index.get("Bedrock Nights");
request.onsuccess = function() {
  var matching = request.result;
  if (matching !== undefined) {
    // A match was found.
    report(matching.isbn, matching.title, matching.author);
  } else {
    // No match was found.
    report(null);
  }
};


Et bien quelque soit le navigateur dernière version (IE10,Firefox 22, Google Chrome), il bloque sur le fait que la variable db est undefined. Bref comme si la base n'avait pas été créée. Mais en regardant dans les paramètres de iE, la base est bien créée dans le cache.(sous le nom de domaine localhost).

Pour information, je lance la page depuis mon serveur wamp en local.
Questions :

est ce qu'il y a un paramétrage du navigateur particulier pour utiliser IndexedDB ?

Avez vous un exemple de site utilisant IndexedDB qui fonctionne ?

car j'ai essayé les exemples en ligne :

https://mdn.mozillademos.org/en-US/docs/IndexedDB/Using_IndexedDB$samples/Full_IndexedDB_example?revision=429275

Et j'obtiens le même type d'erreur dans la console firebug avec : db undefined

http://www.html5rocks.com/en/tutorials/indexeddb/todo/

et pareil quand je clique sur add j'obtiens dans la console TypeError: db is null

Mais, dans toute mes recherches,j'ai quand même trouvé 1 script qui fonctionne bien mais que sur IE10.... mais bon c'est un script récupéré sur un site microsoft.(donc normal). Par contre cela ne fonctionne pas sur firefox 22 et google chrome. Et je ne sais pas pourquoi.

http://msdn.microsoft.com/fr-fr/library/ie/hh779017%28v=vs.85%29.aspx

Toute aide sera la bienvenue.

merci
Hello,

Vu l'erreur rencontrée ça ne serait pas un problème de portée de ta variable db ?
Sans le code complet difficile d'être catégorique mais ça y ressemble.
Bonjour,

Finalement, le problème venait du fait que le navigateur Firefox était paramétré en navigation privée par défaut. Une fois paramétré en navigation normale, cela fonctionne. Je n'ai plus cette erreur. Smiley smile