web-dev-qa-db-fra.com

IE8 prêt à l'emploi prend-il en charge «localStorage»

J'essaie d'utiliser la fonctionnalité HTML5 localStorage. Selon ce blog cela peut être fait en utilisant IE8, mais lorsque j'essaye de l'utiliser, j'obtiens une erreur javascript 'localStorage is null or not an object'

Donc ma question: localStorage peut-il être utilisé par IE8 prêt à l'emploi? Voici mon code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="X-UA-Compatible" content="IE=8" />
    <title>IE8 - DOM Storage</title>
    <script type="text/javascript"> 
        function Save() {
            localStorage.setItem('key','value');            
        }        
    </script>
</head>
<body>        
    <button onclick="Save();">
        Save
    </button>  
</body>
</html>
50
Spiderman

Il prend en charge localStorage, bien que vous deviez être en mode IE8 (cela ne fonctionnera pas en mode IE7).

Pour vérifier que vous travaillez en mode IE8, chargez la console développeur. En haut, assurez-vous que le mode IE8 est sélectionné. Le mode standard serait également Nice.

Vous devez également vous assurer que vous utilisez le doctype HTML5. Vous ne devriez pas pouvoir utiliser un doctype XHTML avec des fonctionnalités HTML5.

<!DOCTYPE html>

L'utilisation de ce doctype ne devrait pas avoir d'incidence sur la prise en charge de votre navigateur.

Assurez-vous également d'accéder à window.localStorage. Cela ne devrait pas être un problème, mais IE est connu pour héberger des problèmes plus étranges. Peut-être qu'il recherche un objet localStorage de portée locale? Qui sait.

56
mattbasta

le commentaire de musicfreak était correct. Parce que cette fonctionnalité nécessite un domaine, j'ai dû l'utiliser uniquement via une URL en direct (au moins localhost) et non en l'ouvrant en tant que fichier à partir d'un disque.

Il n'est pas nécessaire d'ajouter window.localStorage car IE8 ne reconnaît que localStorage également.

7
Spiderman

Développer une bonne réponse précédente:

J'ai eu ce même problème - pire! même IE10 a échoué! - et j'ai découvert que la solution (pour moi) avait plus à voir avec mon environnement de développement qu'Internet Explorer. Ce que j'avais fait était de créer un fichier HTML et de le modifier beaucoup à l'aide d'un bon éditeur de texte. Je pouvais cliquer-faire glisser le fichier dans un navigateur pour voir mes progrès dans le développement de la page, et plus tard simplement rafraîchir la fenêtre du navigateur, lorsque j'ai mis à jour/modifié diverses choses dans le fichier.

Il s'avère que pour Chrome et Firefox et Opera, window.localStorage était un objet valide, mais pour Internet Explorer, il était "non défini" (comme vu dans le débogueur). Cependant, une fois que j'ai a lancé un programme de serveur Web (pour "localhost") et l'a utilisé pour alimenter la page HTML vers le navigateur, puis Internet Explorer a fourni un objet valide ("DispHTMLStorage") pour window.localStorage. Notez également que dans Outils/Options/Avancé pour IE, il y a une case à cocher "activer le stockage DOM" - elle semble être cochée par défaut, mais il est toujours possible qu'un utilisateur l'ait désactivée manuellement.

4
vernonner3voltazim

Essayez d'utiliser "IE = Edge" au lieu de "IE = 8" dans votre balise META compatible x-ua
De Microsoft: ( lien )

Utilisez la valeur suivante pour afficher la page Web en mode EdgeHTML, qui est le mode aux normes les plus élevées pris en charge par Internet Explorer, d'Internet Explorer 6 à IE11.

<meta http-equiv="x-ua-compatible" content="IE=Edge" >
1
foxontherock