2010-08-02 11 views
25

J'utilise localStorage dans mon application JS et je me demandais pourquoi IE9 prétend localStorage == undefined. Autant que je sache, IE8 le soutient, est-il possible de le faire fonctionner dans la nouvelle version?L'objet localStorage n'est pas défini dans IE

+8

Vous testez ceci sur un fichier HTML local avec le fichier 'file: //' protocole? –

+0

Typing 'localStorage' dans la console Dev Tools de la plate-forme Preview fonctionne pour moi sur les sites http –

+0

@Akexandre Jasmin oh vous avez raison, j'ai oublié que cela ne fonctionne pas. Je vous remercie. –

Répondre

49

Testez-vous cela sur un fichier HTML local? c'est-à-dire une URL file:///? LocalStorage n'est disponible que sur les sites Web HTTP. Cela n'a pas changé dans IE9 Dev Preview.

+0

@AJ. Merci. J'avais un soupçon qui était le problème, mais je me demandais toujours ce qui n'allait pas lors de tests dans IE. J'ai commencé à exécuter ma page de test depuis une application Web et cela a très bien fonctionné sur IE, FF et Chrome. – Stonetip

2

Essayez d'ouvrir le fichier comme ce fichier

: //127.0.0.1/c$/pathtofile/file.html

+0

Je ne pense pas que cela fonctionne. Je ne pouvais pas le faire fonctionner dans IE11, au moins. Ah, eh bien, utilisez le serveur Web mongoose, il est assez petit, puis localSTorage fonctionne. – raddevus

+2

@daylight Cela fonctionne si vous ajoutez aussi 'file: // 127.0.0.1' à la liste des sites de confiance. – grammar31

14

IE 11 TRAVAUX

Tout ce que vous avez besoin de deux fichiers n'ajouter: //127.0.0.1 aux zones de confiance sous l'onglet sécurité (NOTE: assurez-vous que la case à cocher https n'est pas cochée) ajoutez cette ligne au début de votre script, en fonction de votre code dont vous n'avez pas besoin à moins d'avoir pu ne pas se connecter à Internet.

!localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p));

!localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p)); 
 

 
if (typeof(Storage) != "undefined") { 
 
    // Store 
 
    localStorage.setItem("lastname", "Smith"); 
 
    // Retrieve 
 
    alert(localStorage.getItem("lastname")); 
 
} else { 
 
    alert("Sorry, your browser does not support Web Storage..."); 
 
}

+0

Super, ça marche! Sur ma machine même sans rien changer dans les onglets de sécurité etc. Une note: ce code lance une erreur 'Variable undefined in strict mode' si vous exécutez votre code en mode strict. Pour résoudre, réécrire en mode non condensé ('if (! LocalStorage) {....}') – Tyblitz

+0

l'homme cela fonctionne !, une excellente façon de tromper IE !! – Nikunj