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 :

Gestion de cookie


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Gestion de cookie
    Bonsoir à tous,

    Cela fait plusieurs jours que je me casse les dents sur la gestion d'un cookie qui serait à terme utilisé pour gérer l'affichage ou de <div>. J'ai essayé de voir ce que pouvait faire mon ami google, mais ca ne semble pas suffisant, j'aimerai donc si possible que quelqun m'aide à éclaircir ce mystère.

    Voici le code

    Merci de votre indulgence
    Code : 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
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
     
    <script type="text/javascript">
     
     
     
    // script pour ecrire le cookie
     
    function SetCookie (name, value) {
     
    	var argv=SetCookie.arguments;
     
    	var argc=SetCookie.arguments.length;
     
    	var expires=(argc > 2) ? argv[2] : null;
     
    	var path=(argc > 3) ? argv[3] : null;
     
    	var domain=(argc > 4) ? argv[4] : null;
     
    	var secure=(argc > 5) ? argv[5] : false;
     
    	document.cookie=name+"="+escape(value)+
     
    		((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
     
    		((path==null) ? "" : ("; path="+path))+
     
    		((domain==null) ? "" : ("; domain="+domain))+
     
    		((secure==true) ? "; secure" : "");
    }
     
     
     
    // script pour lire le cookie
     
     
     
    function getCookieVal(offset) {
     
    	var endstr=document.cookie.indexOf (";", offset);
     
    	if (endstr==-1)
     
          		endstr=document.cookie.length;
     
    	return unescape(document.cookie.substring(offset, endstr));
     
    }
     
    function GetCookie (name) {
     
    	var arg=name+"=";
     
    	var alen=arg.length;
     
    	var clen=document.cookie.length;
     
    	var i=0;
     
    	while (i<clen) {
     
    		var j=i+alen;
     
    		if (document.cookie.substring(i, j)==arg)
     
                            return getCookieVal (j);
     
                    i=document.cookie.indexOf(" ",i)+1;
     
                            if (i==0) break;}
     
    	return null;
     
    }
     
    SetCookie("display",document.getElementById('q3').style.display;,date_exp,therealleague.com);
     
    // script pour le expand-collapse
     
    appear=function(id) {
     
    var d = document.getElementById(id);
     
    var pathname=location.pathname;
     
    var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
     
    var date_exp = new Date();
     
    date_exp.setTime(date_exp.getTime()+(365*24*3600*1000));
     
     if (d.style.display!="none") {
     
    d.style.display ="none";
     
    cook=document.getElementById('q3').style.display;
     
    alert(cook.value);
     
    // on appelle le script et on crée le cookie avec la valeur de document.getElementById('q3').style.display
     
     
    SetCookie("display",document.getElementById('q3').style.display;,date_exp,therealleague.com);
     
     
    } else {
     
    d.style.display ="inline";
     
    cook=document.getElementById('q3').style.display;
     
    alert(d.style.display.value);
     
    SetCookie("display","document.getElementById('q3').style.display;",date_exp,therealleague.com);
     
     }
     
    }
     
    //interface
     
    SetCookie("display","document.getElementById('q3').style.display;",date_exp,therealleague.com);
     
     
     
    // on l'appelle et on lit.
     
    display=GetCookie("display");
     
    document.write(display);
     
    alert(display.innerHTML);
     
    //interface
     
    </script>
     
    <a href="javascript:appear('q3')">héhé</a>
     
    <div id='q3'style="display:none">lala</div></div>
    Mes <div> s'affichent bien lorsque je clique sur le lien. Par contre je n'arrive pas à récupérer la valeur de l'attribut style de l'élément 'q3' afin de pouvoir par la suite l'insérer dans le cookie puis le lire et ainsi afficher ou non la div en fonction du cookie.

  2. #2
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Dans la FAQ :
    http://javascript.developpez.com/faq...=navig#cookies

    Un exemple d'utilisation pour sauver la sélection dans une liste déroulante :
    http://www.developpez.net/forums/d59...e/#post3525699

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci je regarde par là même si ca ne colle pas 100% à mon problème ca peut m'aider.

    Sinon mon code est choquant ou pas? je m'y prends si mal que ca?

  4. #4
    Expert confirmé
    Avatar de Sub0
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2002
    Messages
    3 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 573
    Points : 4 219
    Points
    4 219
    Par défaut
    Je trouve ton code bien compliqué en fait...
    Essaye de le refaire en t'inspirant de la démo que je t'ai donné.

  5. #5
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Citation Envoyé par molko13 Voir le message
    SetCookie("display",document.getElementById('q3').style.display;,date_exp,therealleague.com);

    SetCookie("display",document.getElementById('q3').style.display;,date_exp,therealleague.com);


    alert(d.style.display.value);

    SetCookie("display","document.getElementById('q3').style.display;",date_exp,therealleague.com);

    .
    des ; en trop et des " inutiles! Ca sent le copie coller à la va-vite

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Merci Sub0 je refait tout de zero avec ton exemple. Ce sera certainement plus propre déjà.

    Effectivement Matthieu2000 c'est du copier coller rapide à peine adapter à mon cas, je suis un développeur sur mon temps libre mais principalement sur php. Je ne connais pas du tout le javascript, j'ai juste l'obligation de m'en servir sur ce cas présent. J'ai cherché sur google et je n'ai trouvé que des exemples dans ce style du coup c'est effectivement très fouilli.
    comme dit sur un autre site:
    "tu te complqiues drôelemnt les cookies !
    remarques que c'est normal, tous les exemples qu'on trouve
    embreouillent à loisir"
    Mais encore plus quand on ne comprend que très peu le code en lui-même.
    C'est un peu con à dire car pas logique, mais j'aimerai finir ca avant de me pencher sérieusement sur le javascript, prendre les choses dès le début. Parce que la (forcément) ca me semble bien abstrait tout ça.

    Merci de votre aide et patience en tout cas!

  7. #7
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon alors nette avancée, grâce à ton tuto j'ai pu faire le tri et rationnaliser un peu tout ca.

    Code : 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
    <body>
    <a     href="javascript:void(affiche('q3'));">héhé</a>
    <div    id='q3'
            style="display:GetCookie('TRL_display')">lala</div>
     
    <script>
    // fonction qui crée le cookie
     
    function SetCookie(name, value, days) {
         var expire = new Date ();
         expire.setTime (expire.getTime() + (24 * 60 * 60 * 1000) * days);
         document.cookie = name + "=" + escape(value) + "; expires=" +expire.toGMTString();
    }
    //fonction qui lit le cookie
    function GetCookie(name) {
         var startIndex = document.cookie.indexOf(name);
         if (startIndex != -1) {
              var endIndex = document.cookie.indexOf(";", startIndex);
              if (endIndex == -1) endIndex = document.cookie.length;
              return unescape(document.cookie.substring(startIndex+name.length+1, endIndex));
         }
         else {
              return null;
         }
    }
    function affiche(id) {
     
    if(document.getElementById(id).style.display  != "none"){
    document.getElementById(id).style.display= "none";
    SetCookie('TRL_display','none','365');
    }else{
    document.getElementById(id).style.display= "inline";
    SetCookie('TRL_display','inline','365');   
    }
     
    }
    alert(GetCookie('TRL_display'));
    </script>
    </body>
    Alors à priori tout marche nickel sauf que la div est constamment ouverte même lorsque le cookie lui de faire le contraire :/ (ce que je vois grâce au alert. Ai-je oublié quelque chose? vu le comportement de ma div je pense que c'est cette ligne qui pose problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <div    id='q3'
            style="display:GetCookie('TRL_display')">lala</div>
    J'ai également essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <div id='q3' style="display:"GetCookie('TRL_display');"">
     
    <div id='q3' style="display:javascript:void(GetCookie('TRL_display'));">
     
    <div id='q3' style="display:"javascript:void(GetCookie('TRL_display'));"">
    Je me suis permis de t'ajouter à mes contacts MSN au fait.

  8. #8
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    style="display:expression(GetCookie('TRL_display'))"

  9. #9
    Candidat au Club
    Inscrit en
    Juin 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon voilà j'ai réglé mon problème avec votre et celle d'un autre site.

    Je copie colle mon codeau cas où cela servirait à quelqun.

    Apparemment un style fait appel à du css, pas à du javascript.
    il faut faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script> document.getElementById("q3").style.display=GetCookie('TRL_display'); </script>
    Voici le code complet.

    Code : 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
    <body>
    <a     href="javascript:void(affiche('q3'));">héhé</a>
    <div    id='q3'
            style="display:none">lala</div>
     
    <script>
    // fonction qui crée le cookie
     
    function SetCookie(name, value, days){
    var expire = new Date ();
         expire.setTime(expire.getTime() + (24 * 60 * 60 * 1000) * days);
         document.cookie = name + "=" + escape(value) + "; expires=" +expire.toGMTString();
    }
    //fonction qui lit le cookie
    function GetCookie(name){
    var startIndex = document.cookie.indexOf(name);
    if(startIndex != -1){
    var endIndex = document.cookie.indexOf(";", startIndex);
    if(endIndex == -1) endIndex = document.cookie.length;
    return unescape(document.cookie.substring(startIndex+name.length+1, endIndex));
    }
    else{
    returnnull;
    }
    }
    function affiche(id){
     
    if(document.getElementById(id).style.display  != "none"){
    document.getElementById(id).style.display= "none";
    SetCookie('TRL_display','none','365');
    }else{
    document.getElementById(id).style.display= "inline";
    SetCookie('TRL_display','inline','365');   
    }
     
    }
    //alert(GetCookie('TRL_display'));
    document.getElementById("q3").style.display=GetCookie('TRL_display');
    ;
    </script>
    </body>
    Merci à tous!!!

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

Discussions similaires

  1. Gestion des cookies = pétage de plombs
    Par bulki dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 24/10/2007, 20h19
  2. [JMeter] Gestion des cookies + sessions
    Par benratti dans le forum Tests et Performance
    Réponses: 3
    Dernier message: 15/10/2007, 11h36
  3. gestion des cookies
    Par boss_gama dans le forum ASP
    Réponses: 1
    Dernier message: 20/07/2006, 08h39
  4. Gestion des cookies
    Par The_Lynx dans le forum Web & réseau
    Réponses: 1
    Dernier message: 03/11/2005, 11h38
  5. Gestion des cookies avec Indy 10
    Par membrax dans le forum Web & réseau
    Réponses: 5
    Dernier message: 21/09/2005, 18h44

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