IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Substituer localStorage pour mémoriser des informations


Sujet :

JavaScript

  1. #1
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut Substituer localStorage pour mémoriser des informations
    Salut

    Avec le navigateur Ie et/ou Edge le localStorage n'est pas possible, par quoi peut on le substituer?

    J'ai besoin de mémoriser chez le client 2 informations distinctes sous cette forme

    Clef: nom, donnée: de 4 à 8 caractères maximum
    et
    Clef: QRZs, donnée: 10 fois 4 à 8 caractères séparés par une virgule donc 90 caractères maximum

    Exemple concret:
    nom ---> F1NHS
    QRZs -> F1NHS,F8CJB,F6DXV,F6DVG,F6EOM

    Je voudrais éviter le passage par cookies, si possible.

    Merci.

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Points : 22 933
    Points
    22 933
    Billets dans le blog
    125
    Par défaut
    Dans la conversation précédente, j'ai donné un lien qui donne des solutions de substitution au localstorage !

  3. #3
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Citation Envoyé par danielhagnoul
    Dans la conversation précédente, j'ai donné un lien qui donne des solutions de substitution au localstorage !
    Citation Envoyé par ProgElecT
    Je voudrais éviter le passage par cookies, si possible.
    J'ai pas trouvé, pourtant je viens de ré-ouvrir pas mal de lien, parcouru plusieurs pages.
    Il est vraie que moi et la langue de Shakespeare .... c'est loinnnnnnnnnnnttttttt, mais de là a ne pas avoir trouvée cela , je laisse tombé une paire d'heure.

  4. #4
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    Sans localStorage on n’a pas énormément de choix, malheureusement. C’est soit les cookies, soit une solution plus exotique à base de plugin (je pense aux LSO de Flash notamment) ou de truc non standard spécial sauce Microsoft. Mes connaissances ne vont pas plus loin dans ce domaine

  5. #5
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Merci Watilin de ta réponse, tant-pis, je vais donc voir avec un passage par cookies.

    Après en avoir parlé avec les futurs utilisateurs (des radioamateurs, comme moi), connaissant pour la plus part l'informatique, ils savent que je ne déposerais pas des saletés sur leurs ordinateurs, de plus c'est chacun qui choisit ou non d'enregistrer les informations.
    J'utiliserai localstorage pour les navigateurs qui le supporte (c'est déjà en cours d'utilisation par quelques uns) et des cookies pour les autres.

    J'ai trouvé çà Cet algorithme est une imitation exacte de l’objet localStorage, mais utilise les cookies., reste à réussir à le faire fonctionner .

  6. #6
    Expert éminent
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    Par défaut
    C’est marrant comme les gens attribuent plus de mauvaises intentions à un cookie qu’au localStorage… Probablement parce que c’est plus connu. En fait, n’importe quelle solution de stockage persistant permet de faire du pistage.

    Le problème que les cookies ont en plus, c’est qu’ils accompagnent les requêtes faites au serveur. Si la connexion n’est pas chiffrée, ils peuvent être vus par un tiers (au hasard, les boîtes noires de la Loi Renseignement). Donc ne mets rien de sensible dans tes cookies… Ou chiffre tes données avant de les stocker

    Edit : au fait : caniuse

  7. #7
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    Il existe quelques polyfills sur le localStorage, pourquoi ne pas en utiliser un ? => https://github.com/search?q=localSto...e=Repositories

    Bien sur j'imagine qu'ils utilisent principalement des cookies, mais il doit peut être en exister une qui utiliserai IndexDB ?

    Sinon bien sur, utiliser IndexDB directement, ça existe depuis plus longtemps que le local storage, et même su IE. => https://caniuse.com/#search=IndexedDB

    Au cas où vous souhaiteriez tester votre code dans des navigateurs qui utilisent toujours un préfixe, vous pouvez utiliser le code suivant :

    // Sur la ligne suivante, vous devez inclure les préfixes des implémentations que vous souhaitez tester.
    window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
    /../
    source => https://developer.mozilla.org/fr/doc...sing_IndexedDB

    bien sur c'est sans garantie, je n'ai pas encore eu l'occasion d'expérimenter cette voie, mais ça me titille

    |edit] petite correction, mais en prime un nouveau lien : https://blogs.windows.com/msedgedev/...edge-devtools/

  8. #8
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Merci psychadelic de tes indications/commentaires.

    De toute façon, ses données sont dans le domaine public, il ne s'agit que de mémoriser l'indicatif de l'utilisateur du programme et l'ensemble des indicatifs ayant participé à une discussion, tout cela à des fins d'affichage sur une carte géographique, à aucun moment, une fois le programme chargé, il n'y a d'échange avec l'extérieur.

    Le prototype en test est visible ICI
    Pour l'instant, il ne fonctionne correctement que sous FireFox, Chrome, Opera.
    Sous Ie ,Edge , la partie enregistrement/chargement ne fonctionne pas.
    Sous Safari, pas de prise en compte du CSS.

    Il me reste donc du boulot (pour un jeune retraité c'est un comble ).

    Merci.

  9. #9
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Bonjour,
    Citation Envoyé par ProgElecT
    Avec le navigateur Ie et/ou Edge le localStorage n'est pas possible, par quoi peut on le substituer?
    ces 2 navigateurs connaissent le localStorage mais il faut tester avec un serveur local car il n'accepte pas le protocole file:.

  10. #10
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut

    Je reprend l'apprentissage du Cookie.
    J'ai fait cela pour essayer de maîtriser la chose
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <!DOCTYPE html>
    <html lang="fr"> <!-- EtudeCookies.html -->
    	<head>
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<title>Etude Cookies</title>
    	</head>
    	<body>
    		<!-- source: https://ppk.developpez.com/tutoriels/javascript/gestion-cookies-javascript/#LIV -->
    		Ce souvenir de moi
    		<button id="btnperso" title="Se souvenir de moi ?" onclick="MemoUtilisateur()">Création cookie F1NHS</button>
    		<p id="inf1"></p>
    		Lire le cookie
    		<button id="btnautre" title="Recuperation du QRZ" onclick="RecupMonQRZ()">Lire le cookie de nom MonQRZ</button>
    		<p id="inf2"></p>
    		Supprimer le cookie
    		<button id="btnautre" title="Recuperation du QRZ" onclick="SuppMonQRZ()">Supprimer le cookie MonQRZ</button>
    		<p id="inf3"></p>
     
    		<script>
                            function createCookie(name,value,days) {
                                    if (days) {
                                            var date = new Date();
                                            date.setTime(date.getTime()+(days*24*60*60*1000));
                                            var expires = "; expires="+date.toGMTString();
                                            
                                    }else{
                                            var expires = "";
                                    }
                                    document.cookie = name+"="+value+expires+"; path=/";
                            }//---------------------------------------------------------
                            function readCookie(name) {
                                    var nameEQ = name + "=";
                                    var ca = document.cookie.split(';');
                                    for(var i=0;i < ca.length;i++) {;
                                            var c = ca[i];
                                            while (c.charAt(0)==' ') c = c.substring(1,c.length);
                                                    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
                                    }
                                    return null;
                            }//---------------------------------------------------------
                            function eraseCookie(name) {
                                    createCookie(name,"",-1);
                            }//---------------------------------------------------------
                            function MemoUtilisateur() {
                                    createCookie('MonQRZ','F1NHS',365); // expire dans 1 an
                                    document.getElementById('inf1').textContent = 'Mémorisation de F1NHS, au prochain démarrage cet indicatif sera centré sur la page';
                            }//---------------------------------------------------------
                            function RecupMonQRZ() {
                                    var recupQRZ = readCookie('MonQRZ');
                                    if (recupQRZ) {
                                            document.getElementById('inf2').textContent = 'Cookies MonQRZ trouvée, sa valeur est ' + recupQRZ;
                                    }else{
                                            document.getElementById('inf2').textContent = 'Cookies MonQRZ non trouvée';
                                    }
                            }//---------------------------------------------------------
                            function SuppMonQRZ() {
                                    var KillCookies = eraseCookie('MonQRZ');
                            }//---------------------------------------------------------
                    </script>
     
    	</body>
    </html>
    Je précise que, dans un premier temps, j’expérimente sous Firefox.
    Au premier démmarage du code, en cliquant sur le bouton de création du cookie MonQRZ, je peu le lire en cliquant sur le bouton Lire le cookie de nom MonQRZ, c'est super !

    Je ferme la page, je la relance, , je clique sur le bouton Lire le cookie de nom MonQRZ, ben là, je ne retrouve pas le cookie.
    Si je regarde avec F12, onglet Stockage --> Cookies, je vois le cookie.

    Ou je me trompe dans le code, qu'est ce que je n'ai pas compris ?

    Merci de vos futurs informations.

  11. #11
    Expert confirmé Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 529
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 529
    Points : 4 749
    Points
    4 749
    Par défaut
    Oh, la, la...
    J'en ai écrit du code pour gérer des cookies, mais maintenant je ne vais même plus rechercher mes vielles lignes de code et je passe directement par la => https://github.com/search?l=JavaScri...e=Repositories

    Je prends en général le plus léger ou le plus populaire / simple à utiliser.

    celui-ci m'a l'air bien => https://github.com/js-cookie/js-cookie
    apparemment il permet de gérer des données en JSON et se débrouille avec les caractères spéciaux sans planter.

  12. #12
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Re



    Ça fonctionne

    Merci a tous les intervenants.
    En résumer, pour Firefox, Chrome et Opera j'utilise LocalStorage , pour Ie et Edge, j'utilise des cookies avec la librairie js.cookie.js que m'a indiqué psychadelic.

    Pour cela, j'ai dût passer aussi les déclarations const et let en var car Ie et Edge n’appréciaient pas

    Le programme tourne maintenant sous Firefox 62.0.2 (64 bits), Chrome 69.0.3497.100, Opera 55.0, Ie 11.285 et Edge 17.17134 .
    Il me reste Safari qui ne prend pas en considération la partie CSS (sujet d'une prochaine discussion).

    En tous cas, gros merciiiiiiiiiiii à chacun d'avoir eu la patience de me guider.

    Motif de l'édit:
    Il me reste Safari qui ne prend pas en considération la partie CSS (sujet d'une prochaine discussion).
    J'ai la réponse
    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    aucune raison sauf si tu utilises Safari sous Window qui est obsolète !
    post https://www.developpez.net/forums/d1.../#post10239382

  13. #13
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 075
    Points : 44 657
    Points
    44 657
    Par défaut
    Ton script est fonctionnel et suffisant.
    Si tu veux tester correctement il te faut tester à partir d'un serveur local ou en ligne, cela semble être plutôt un problème de configuration du navigateur.

    Pour cela, j'ai dût passer aussi les déclarations const et let en var car Ie et Edge n’appréciaient pas
    Pas rencontré ce soucis sur IE11, pas moins, et Edge ?

  14. #14
    Expert éminent sénior
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 097
    Points : 16 606
    Points
    16 606
    Par défaut
    Salut
    Citation Envoyé par NoSmoking Voir le message
    .....Pas rencontré ce soucis sur IE11, pas moins, et Edge ?
    Tu as raison, je me suis trompé dans ma déduction de problème au cours de mes différents essais, je viens de tout repasser en constet let, tout fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script SNMP pour récupérer des information de la MIB
    Par patchiko dans le forum Développement
    Réponses: 4
    Dernier message: 23/05/2011, 18h31
  2. Réponses: 11
    Dernier message: 08/10/2007, 13h15
  3. Réponses: 6
    Dernier message: 31/08/2007, 11h13
  4. Réponses: 8
    Dernier message: 13/07/2006, 01h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo