Mises à jour d'IndexedDB pour IE10 et les applications de style Metro

IEBlog Français

Blog de l'équipe de développement de Windows Internet Explorer

Mises à jour d'IndexedDB pour IE10 et les applications de style Metro

  • Comments 0

L'équipe Internet Explorer, aidée de la vaste communauté Web, a continué à apporter des améliorations à la spécification IndexedDB. IndexedDB est une ébauche de travail du W3C qui permet de stocker, rechercher et extraire des données sur l'appareil de l'utilisateur, même en cas d'absence de connectivité Internet. IndexedDB est une fonctionnalité de la plateforme Web partagée par IE10 et les applications de style Metro dans Windows 8 Consumer Preview.

Ce billet de blog décrit les améliorations que nous avons apportées dans Internet Explorer 10 Consumer Preview afin d'implémenter la dernière version de la spécification du W3C.

Modifications apportées au contrôle de version

La modification la plus importante concerne la façon dont les développeurs actualisent leurs schémas de base de données (c'est-à-dire les magasins d'objets, les index) d'une version à la suivante. Le groupe de travail (notamment Microsoft) a décidé de remplacer l'API IDBDatabase.setVersion par une nouvelle API IDBFactory.open. La nouvelle API open utilise un paramètre supplémentaire pour savoir si vous souhaitez utiliser la version actuelle de la base de données ou si vous préférez mettre à jour le schéma de base de données vers une version plus récente. L'API open renvoie maintenant un objet IDBOpenDBRequest qui vous permet de vous inscrire à l'événement onupgradeneeded. Dans le gestionnaire d'événements, vous pouvez mettre à jour votre schéma de base de données en ajoutant des index et des magasins d'objets supplémentaires.

Pour mettre à jour votre code existant, ajoutez un paramètre version à votre méthode open, remplaçant ainsi l'appel à setVersion, puis inscrivez un nouveau gestionnaire d'événements onupgradeneeded dans la requête IDBOpenDBRequest (voir ci-dessous).

Exemple d'ancien code : le code impacté est surligné en vert

function openDBTest(dbName) {

var rq = window.msIndexedDB.open(dbName);

rq.onsuccess = successOpenningDB;

rq.onerror = failureHandler;

}

 

function successOpenningDB(evt) {

var db = evt.target.result;

var rq = db.setVersion("1");

rq.onsuccess = successHandler;

rq.onerror = failureHandler;

}

 

function successHandler(evt) {

//create schema

}

Exemple de nouveau code : le code modifié est surligné en jaune

function openDBTest(dbName) {

var rq = window.msIndexedDB.open(dbName, 1);

rq.onsuccess = useDB;

rq.onupgradeneeded = successHandler;

rq.onerror = failureHandler;

}

 

function successHandler(evt) {

//create schema

}

Modifications supplémentaires

Nous avons en outre appliqué à la plateforme des changements de moindre envergure (mais tout de même importants) :

  • La méthode IDBCursor.advance(count) a été ajoutée. Cette méthode vous permet d'ignorer des enregistrements dans un curseur, ce qui permet la pagination. Le paramètre count définit le nombre d'enregistrements que vous souhaitez ignorer avant d'accéder aux données. Les valeurs valides sont 1 ou plus.
  • Les méthodes IDBObjectStore.count(key) et IDBIndex.count(key) ont été ajoutées. Elles vous permettent de comptabiliser les enregistrements qui répondent à des critères spécifiques. Si la valeur de clé n'est pas spécifiée, le nombre de tous les enregistrements à l'intérieur de l'index ou du magasin d'objets est renvoyé.
  • La méthode IDBFactory.cmp(first, second) a été ajoutée. Cette méthode compare deux valeurs de clé afin de déterminer si une valeur est supérieure à l'autre ou si les deux valeurs sont égales.
  • IDBKeyRanges fonctionne maintenant avec des méthodes supplémentaires, notamment IDBObjectStore.count, IDBObjectStore.delete, IDBIndex.count. Cela vous permet de faire correspondre les enregistrements qui recouvrent des groupes de valeurs de clé.
  • Les valeurs ajoutées à la base de données n'ont plus besoin de satisfaire tous les index précédemment définis. Cela vous permet d'ajouter à un IDBObjectStore des enregistrements qui se trouvent en dehors des limites des index précédemment définis.
  • Si une exception est levée dans le contexte d'une transaction active, la transaction est annulée. Cela implique que si une exception est levée au sein du gestionnaire d'événements onsuccess de n'importe quelle requête, la transaction active est annulée. Toutefois, la gestion de l'exception permettra à la transaction de base de données de continuer normalement.

    // This won’t abort the transaction because there is no active transaction.

    function createTransaction() {

    var txn = db.transaction("test");

    window.aaaaaa();

    }

     

    // This will abort the transaction because the exception is thrown when there is an active transaction.

    var rq = objectStore.add(record);

    rq.onsuccess = function (event) {

    window.aaaaaa();

    }

  • Prise en charge de l'indexation des propriétés dans un objet Blob. Cela vous permet de télécharger des données binaires du Web, de les stocker en local et d'utiliser des propriétés blob (nom, taille, etc.) en tant qu'index ou clés uniques dans l'objet blob. Cette fonctionnalité permet des situations dans lesquelles vous écoutez de la musique de votre collection ou affichez des images et des vidéos hors connexion, tout en ayant la possibilité d'effectuer des recherches dans votre collection en utilisant le nom de l'objet blob. Nos dernières démonstrations de test d'IE vous montrent comment utiliser cette fonctionnalité pour regarder vos albums Facebook hors connexion.
  • Capture d'écran des démonstrations de test d'IE Facebook Companion
    Capture d'écran des démonstrations de test d'IE Facebook Companion

Nous avons également soumis plus de 100 cas de test au groupe de travail du W3C pour IndexedDB, notamment des nouveaux tests et des versions actualisées de tests existants.

Contrôle de la manière dont les sites et les applications utilisent IndexedDB

En plus des mises à jour visant à s'adapter aux évolutions de la spécification W3C, Windows 8 Consumer Preview inclut des améliorations qui donnent la possibilité aux utilisateurs de toujours contrôler la façon dont les sites et les applications utilisent IndexedDB sur leurs appareils :

  • Un gestionnaire de désinstallation a été introduit pour les applications de style Metro qui utilisent indexedDB. Ce gestionnaire permet de s'assurer qu'à chaque fois qu'un utilisateur final supprime une application, les données associées dans la base de données IndexedDB de l'application sont automatiquement supprimées au cours du processus de désinstallation.
  • Des quotas (limites de stockage) ont été mis en place pour empêcher les sites d'épuiser l'espace disque. Les quotas peuvent être mis à jour par les administrateurs informatiques via les paramètres de stratégie de groupe ou par les utilisateurs disposant d'un accès administrateur au Registre. Les quotas ne s'appliquent cependant pas aux applications de style Metro.
  • Une nouvelle interface de navigateur a été ajoutée pour que l'utilisateur final puisse gérer ses bases de données et ses quotas. Les utilisateurs peuvent utiliser l'onglet [Caches and databases] (Caches et bases de données) pour supprimer les bases de données une par une. Vous pouvez également supprimer toutes les bases de données en cochant la case [Cookies and Website data] (Cookies et données des sites Web) de la boîte de dialogue Supprimer l'historique de navigation.

Capture d'écran du nouvel onglet [Caches and databases] (Caches et bases de données) de la boîte de dialogue [Website Data Settings] (Paramètres de données des sites Web). Cela vous permet de contrôler si les sites Web peuvent créer des caches et des bases de données et de contrôler la taille possible de ces caches et bases de données.Capture d'écran de la boîte de dialogue actualisée Supprimer l'historique de navigation illustrant la nouvelle formulation de l'option Cookies, qui inclut maintenant les données des sites Web, en particulier les bases de données créées par les sites Web.
Captures d'écran du nouvel onglet [Caches and databases] (Caches et bases de données) de la boîte de dialogue [Website Data Settings] (Paramètres de données des sites Web) et de la boîte de dialogue actualisée Supprimer l'historique de navigation

Perspectives

Le groupe de travail WebApp du W3C continue à mener IndexedDB à son terme en apportant des améliorations importantes et en réduisant le nombre et l'envergure des modifications appliquées à la spécification. Il s'agit d'une étape importante pour les développeurs Web qui s'appuieront à l'avenir sur cette technologie, notamment dans Windows 8 et IE10.

Nous attendons avec intérêt de voir comment vous utilisez IndexedDB dans vos sites et applications, et nous sommes impatients de recevoir vos commentaires sur IndexedDB dans IE10.

—Israel Hilerio, chef de projet, Internet Explorer

  • Loading...