2012-12-28 2 views
1

Possible en double:
localStorage object is undefined in IE'Storage' est pas défini dans IE9

Le code suivant me donne SCRIPT5009: 'Storage' is undefined dans IE9. Cela fonctionne dans Chrome, Safari, Firefox.

Storage.prototype.setObject = function(key, value) { 
    this.setItem(key, JSON.stringify(value)); 
} 

udpate Je sers la page du serveur Apache, ne pas y accéder à partir du système de fichiers local si les éléments suivants ne sont pas applicables:

localStorage object is undefined in IE

local storage in IE9 fails when the website is accessed directly from the file system

mise à jour 2 problème trouvé, voir ma réponse.

+0

http://caniuse.com/ –

+5

Avez-vous un DOCTYPE sur la page? La page fonctionne-t-elle en "Mode de compatibilité"? –

+0

Je n'ai pas spécifié DOCTYPE. Il fonctionne en mode "Quirks" –

Répondre

0

Deviner ici ...

IE 9 ne semble pas soutenir localStorage lorsqu'il est exécuté sur un système de fichiers local: local storage in IE9 fails when the website is accessed directly from the file system

Plus de détails peuvent être trouvés ici: http://www.wintellect.com/CS/blogs/jprosise/archive/2011/03/10/using-html5-web-storage-for-interprocess-communication.aspx

Vous pouvez exécuter sur un serveur externe - ou vérifiez s'il est pris en charge dans votre script:

if ("localStorage" in window && window["localStorage"] != null) { 

    // Local storage supported 

} 
+0

Je sers la page à partir du serveur Apache, ne pas y accéder à partir du système de fichiers local. En outre, je crois que IE9 prend en charge le stockage http://caniuse.com/#feat=namevalue-storage –

+0

Oui c'est le cas! Mais il ne semble pas sur un système de fichiers local. C'était ma conjecture;) – madflow

1

a trouvé le problème. Je dois spécifier DOCTYPE <!DOCTYPE html> Même si les autres navigateurs ne se soucient pas de IE.

Merci à @Rocket Hazmat pour l'avoir signalé.

Sans DOCTYPE, IE passe en mode Quirks. Avec DOCTYPE, IE passe en mode Standards. Ma conjecture est que IE doit être en mode Standards afin d'accéder aux fonctionnalités HTML5.