31 votes

Est-ce que "localStorage" dans Firefox ne fonctionne que lorsque la page est en ligne ?

Je m'amuse donc avec HTML 5 et le localStorage et je remarque que mes valeurs ne sont stockées que lorsque j'exécute la page dans Firefox sur l'hôte local (c.-à-d. que les valeurs sont stockées dans le localStorage). http://127.0.0.1:8000/test/index.html ), mais lorsque j'exécute le fichier localement (file:///C:/test/index.html), mes valeurs ne sont pas enregistrées. Safari 4 n'a aucun problème avec les deux configurations. Quelqu'un sait-il si c'est le résultat d'un choix délibéré ? DOM Storage sur le Mozilla Developer Center

(Firefox 2 a autorisé l'accès aux objets de stockage plus haut dans la hiérarchie du domaine que le document actuel. Ceci n'est plus plus autorisé dans Firefox 3, pour des raisons de sécurité. En outre, cet ajout proposé à HTML 5 a été supprimé de la spécification HTML 5 en faveur de localStorage, qui est implémenté dans Firefox 3.5).

Ou s'il existe une solution de contournement ?
Je me demande parce qu'un stockage hors ligne qui ne fonctionne qu'en ligne semble idiot :P

Si quelqu'un se pose la question, le code est aussi simple que possible :

function save()
{
 localStorage.setItem('foo','bar');
}

function load()
{
 var test = localStorage.getItem('foo');
 alert(test);
}

0 votes

...mais semble bien fonctionner hors ligne avec chrome

1 votes

Dieu merci, j'ai trouvé ceci... J'ai essayé de déboguer dans Firefox et je me demandais où je m'étais trompé parce que je ne voyais rien de mal dans mon code. Il fonctionnait dans IE et Chrome en travaillant avec l'URL file:// mais Firefox ne fonctionnait pas. Dès que je l'ai mis sur un serveur, il a fonctionné parfaitement.

2 votes

Bonjour, je vous écris depuis l'année 2011. Ce n'est toujours pas réparé ! bugzilla.mozilla.org/show%5Fbug.cgi?id=507361

24voto

user183799 Points 226

Il semble que ce soit un bug : Bogue 507361 - localStorage ne fonctionne pas dans les documents file:///.
J'espère qu'il sera bientôt réparé !

2011-09-13 : Bug corrigé, implémenté dans 'Mozilla8'. J'ai testé cela avec Firefox 8 et cela fonctionne maintenant.

3 votes

En attendant, vous pouvez utiliser Chrome pour les scripts hors ligne de testyour, car il n'a pas ce bug.

0 votes

Je ne peux pas vérifier pour le moment mais je pense que c'est la réponse finale !

21voto

Andrzej Doyle Points 52541

Eh bien, le document lié dit que

localStorage est identique à globalStorage [location.hostname], à l'exception des éléments suivants qui se rapporte à une origine HTML5 (schéma + nom d'hôte + port non standard)

Je ne veux pas prétendre que je comprends à 100% ce que cela signifie, mais la partie entre parenthèses suggère que l'URL doit avoir certaines propriétés - en particulier que le schéma et le nom d'hôte sont ce que Firefox considère comme une origine HTML 5. Je soupçonne que file:/// ne correspondent pas à cela, alors que vos http://127.0.0.1/ fait.

modifier : Regarder les résultats du W3C description de la propriété Origin L'étape 7 semble être à l'origine du problème. Selon la façon dont le localStorage est mise en œuvre, elle peut s'attendre à un 3-tuple tel que renvoyé par l'étape 12, mais pour un file:// URL la valeur de retour peut être à peu près n'importe quoi.

Donc, euh, je suppose que c'est à dessein. À la réflexion, il y a de fortes chances que ce ne soit pas vraiment à dessein ; il n'y a aucune raison pour laquelle localStorage ne devrait pas travailler pour file:// URLs. Il se peut que la sortie d'une implémentation spécifique à un navigateur ne corresponde pas aux attentes d'une autre.

En ce qui concerne les solutions de contournement, est-ce que globalStorage pas faire ce que tu veux ici ?

2voto

jbartas Points 1

Depuis le 5 octobre 2020, localStorage sur Firefox semble être à nouveau en panne. Essayez ceci :

  1. Télécharger la page de démonstration de Mozilla : https://mdn.github.io/dom-examples/web-storage/
  2. Changez l'animal/la couleur en quelque chose d'autre que la valeur par défaut.
  3. fermer l'onglet de la page (ou le navigateur).
  4. Téléchargez à nouveau la page. Les valeurs par défaut sont rétablies. (Firefox 81:0 et.al.)

Pire encore, si vous effectuez les étapes 1 et 2 ci-dessus et que vous ouvrez ensuite une autre copie de la démo dans un nouvel onglet, non seulement le nouvel onglet n'obtient pas les données sauvegardées, mais la page de la démo originale (rafraîchissez-la) est revenue aux valeurs par défaut, comme si le nouvel onglet avait SAUVÉ les données sauvegardées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X