Accueil > Forum > > > > Les cookies magiques...
Les cookies magiques...
dimanche 11 octobre 2009 à 12:24:23 |
Les cookies magiques...

alexflex25
|
Bonjour,
Encore une fois j'ai besoin de votre expérience...
J'ai réalisé une "class" javascript permettant de faire du drag n drop (que souhaite partager ici par la suite...). Mon problème concerne la sauvegarde de la position de chaque élément "Dragable"
L'algorithme établi est le suivant:
- Lorsque la position de mes éléments changent
- Je sauvegarde toutes les informations dont j'ai besoin dans un cookie.
Voici le résultat.
- Je bouge mes éléments...
- Les positions sont bien sauvegardés dans le cookie.
- J'actualise ma page.
- Les éléments conserve bien leurs positions
- COOL!!!
MAIS
- Je ferme le navigateur
- Je retourne sur ma page
- Les éléments se réorganise bien mais pas dans le dernier état. (celui que j'avais quand j'ai fermé le navigateur. Sachant qu'avant de fermer le navigateur les informations du cookie sont correctes)
Voici mes conclusions, les informations du cookie change entre le moment ou je ferme le navigateur et le moment ou je retourne dessus.(D'ou le nom du sujet "cookie magique")
Je ne vois pas d'où vient le problème...
Je ne pense pas que mon code soit faut puisque tout fonctionne bien lorsque je recharge ma page...
Merci de votre aide.
|
|
dimanche 11 octobre 2009 à 13:58:07 |
Re : Les cookies magiques...

Bul3
|
Bonjour,
>>les informations du cookie change entre le moment
>>ou je ferme le navigateur et le moment ou je
>>retourne dessus.
euh...
je ne dirais pas que c'est tout à fait le
contraire , mais pas loin !
un cookie permet de mémoriser ce qu'on veut
et de retrouver ces informations lors d'une
connexion ultérieure ( sauf si l'internaute
supprime ces cookies ! )
si le cookie change, c'est qu'il est modifié !
aucun mystère.
exemple d'utilisation ? c'est ici
Cordialement [ mon Site] [ M'écrire] Bul 
|
|
dimanche 11 octobre 2009 à 15:00:40 |
Re : Les cookies magiques...

alexflex25
|
Je suis tout à fais d'accord avec toi!
Est ce que sa ne pourrait pas être un problème de cache?
(remarque sans réel fondement)
Mais je ne comprend pas pourquoi mon script fonctionne lorsque je recharge ma page et pas quand je quitte le navigateur.
|
|
dimanche 11 octobre 2009 à 15:14:59 |
Re : Les cookies magiques...

Bul3
|
le cache ? à priori non.
>>je ne comprend pas pourquoi mon script fonctionne lorsque
>>je recharge ma page et pas quand je quitte le navigateur
moi non plus !
mais essayez mon exemple, par exemple,
il fonctionne dans les 2 cas.
vous devez faire un erreur (?)
je vous dirais bien à la ligne 685,
mais je n'en suis pas absolument certain
navré, j'ai cassé ma  hier soir, vous
n'avez pas de bol ( de cidre ou autres ),
je ne parviens plus à deviner
quoi que ce soit ( désolé )
mais je vous en prie ! si vous comprenez
le 2ème degré de ce message, ne nous mettez pas
ces 685 lignes... voire plus ! ça décourage !!!
faites l'extrait du nécessaire. tout le
nécessaire, mais rien que le nécessaire.
mettre en forme sa question c'est d'ailleurs
très souvent résoudre... seul 
|
|
dimanche 11 octobre 2009 à 15:43:12 |
Re : Les cookies magiques...

alexflex25
|
Comme je l'ai dit précédemment je sauvegarde dans un cookie toutes les infos dont j'ai besoin de la façon suivante: A chaque fois que la position de mes éléments changes
Code Javascript :
savepositiondragableelements: function(){
var name = 'asterisk';
var value = '';
var expires = '365';
var path = '/';
var domain = 'asterisk.flex';
var secure =''
var i=0;
var menuname = this.listeelement[i][3].getattribute('list');
for(i=0;i<this.listeelement.length;i++){
value += menuname + '_' + i + '_0=' + this.listeelement[i][0] + ';';
value += menuname + '_' + i + '_1=' +this.listeelement[i][1] + ';';
value += menuname + '_' + i + '_2=' +this.listeelement[i][2] + ';';
value += menuname + '_' + i + '_3=' +this.listeelement[i][3].id + ';';
}
set_cookie( name, value, expires, path, domain, secure );
},
Voici la fonction Set_Cookie ... qui est appelé à la fin.
Code Javascript : function set_cookie( name, value, expires, path, domain, secure ){
var today = new date();
today.settime( today.gettime() );
if ( expires ){
expires = expires * 1000 * 60 * 60 * 24;
}
var expires_date = new date( today.gettime() + (expires) );
document.cookie = name + "=" +escape( value ) +
( ( expires ) ? ";expires=" + expires_date.togmtstring() : "" ) +
( ( path ) ? ";path=" + path : "" ) +
( ( domain ) ? ";domain=" + domain : "" ) +
( ( secure ) ? ";secure" : "" );
}
Puis, quand je retourne sur cette page j'appel la fonction suivante qui se charge de remplir avec les données du cookie mon attribut "this.listeElement" qui contient la liste et la position de chaque élément
Code Javascript :
loadpositiondragableelements:function(){
//je récupère mon cookie
var infocookie = getcookieinfo('asterisk');
var reg1=new regexp(";", "g");
var reg2=new regexp("=", "g");
var reg3=new regexp("_", "g");
//je sépare toutes les variables pour les mettre dans un tableau
var listvariables=infocookie.split(reg1);
var i = 0;
var j = 0;
//je parcour cette liste de variable
for (i=0; i<listvariables.length; i++) {
//je sépare le nom de la variable de sa valeur
var variables = listvariables[i].split(reg2);
var nomvariable = '';
//puis je reconstruis mon tableau en fonction des noms des variables
if( variables[0].match(reg3) ){
nomvariable = variables[0].split(reg3);
if( nomvariable[2] == '3' ){
this.listeelement[nomvariable[1]][nomvariable[2]] = null;
this.listeelement[nomvariable[1]][nomvariable[2]] = $(variables[1]);
}else{
this.listeelement[nomvariable[1]][nomvariable[2]] = 0;
this.listeelement[nomvariable[1]][nomvariable[2]] = parseint(variables[1]);
}
}
}
},
Voici au cas ou ma fonction de récupération de cookie... Mais je ne pense pas qu'elle pose problème...
Code Javascript :
function getcookieinfo(dataname){
var cookielen = dataname.length;
var cookiedata = document.cookie;
var allcookielen = cookiedata.length;
var i = 0;
var cookieend;
while(i < allcookielen){
var j = i + cookielen;
if (cookiedata.substring(i,j) == dataname){
cookieend = cookiedata.indexof(";", j);
if (cookieend == -1){
cookieend = cookiedata.length;
}
return unescape(cookiedata.substring(j+1, cookieend))
}
i++;
}
return "echec : cookie non cree ?";
}
(En même temps y'a rien qui me semble poser problème.
Mais ça ne fonctionne pas, donc y'a forcement une raison.
A mon avis le problème doit se trouver entre la chaise et le clavier...)
|
|
dimanche 11 octobre 2009 à 15:55:26 |
Re : Les cookies magiques...

Bul3
|
vous utilisez les cookies comme de
nombreux exemples montrent en compliquant
... bien inutilement.
un cookie c'est unique pour un visiteur,
pour un site, c'est une banale chaîne
de caractères, rien d'autres.
pourquoi donc gérer "n" ajouts, modifs...
dans le cookies, utiliser des expression
régulières...
pour tester, il faudrait mettre des alert
un peu partout : je vous laisse le faire.
mais, perso, bêtement, dans un cookie
le stocke ce que je veux récupérer !
regarder mon exemple
s'il y a plusieurs valeurs, bien entendu,
un petit split sur un séparateur quelconque,
rien d'autre n'est nécessaire

|
|
dimanche 11 octobre 2009 à 17:11:59 |
Re : Les cookies magiques...

alexflex25
|
je viens de modifier mes 2 méthodes:
savepositiondragableelements
loadpositiondragableelements
Pour sauvegarder et charger les positions de mes éléments dans un serveur mysql.
Tout fonctionne parfaitement... (mais c'est ce que je veux faire...)
Je pense qu'il doit avoir une subtilité des cookies que je n'est pas comprise.
Peut-être faudrait il détruire le cookie avant de le recréer.
Peut-être qu'il faut un temps minimum pour écrire le cookie chez le client...
Je ne vois vraiment pas...
Aurais-tu une piste à me faire suivre?
Merci beaucoup dans tous les cas.
|
|
lundi 12 octobre 2009 à 09:44:44 |
Re : Les cookies magiques...

Bul3
|
ni destruction, ne temps minimum
>>Je pense qu'il doit avoir une subtilité des
>>cookies que je n'est pas comprise.
plutôt dans la gestion de la chaîne de caractères
je n'ai pas décortiqué !

|
|
lundi 12 octobre 2009 à 10:10:50 |
Re : Les cookies magiques...

Bul3
|
par exemple soit à mémoriser 2 valeurs, v1 et v2 :
Code Javascript : document.cookie = v1+"_"+v2+
";expires=" + d.togmtstring() + ";" ;
et pour relire :
Code Javascript : var trv=document.cookie.split("_");
v1=trv[0];
v2=trv{1];

|
|
lundi 12 octobre 2009 à 17:08:26 |
Re : Les cookies magiques...

alexflex25
|
Une fois de plus je suis tout à fais d'accord avec toi.
Voici le résultat d'un nouveau test:
1 - Je "drag" mes éléments dans la page par exemple dans l'ordre (e1,e4,e3,e2)
2 - Je regarde le cookie via firefox (Outils -> Options -> Vie privée -> Afficher les cookies) j'ai bien l'ordre (e1,e4,e3,e2)
3 - Je recharge la page (l'ordre est conservé)
4 - Je regarde le cookie via firefox ... j'ai bien l'ordre (e1,e4,e3,e2)
5 - Je ferme le navigateur
6 - J'ouvre le navigateur (sans aller sur mon site)
7 - Je regarde le cookie je n'ai pas le même ordre
Je n'ai pas réussi à déterminer si l'ordre que je retrouve après la réouverture de mon navigateur est un état antécédent ou non.
Ce qui m'étonne encore plus c'est qu'en stockant les informations dans "mysql" au lieu d'un "coockie" tout fonctionne bien?
Si cela peut aider.
|
|
Cette discussion est classée dans : page, navigateur, informations, cookie, éléments
Répondre à ce message
Sujets en rapport avec ce message
cookie [ par syndom ]
J'ai créer un cookie via une page A.L'accès à d'autres pages ne peut se faire que si le cookie est toujours actif. Si le couokie est expiré, le lecteu
Sélectionnabilité des éléments d'une page web [ par arnal69130 ]
Bonjour à tous,je cherche désèspérement à désactiver la sélectionnabilité d'un élément d'une page web. Plus clairement :par exemple si vous cliquez to
Besoin d'aide pour créer un cookie [ par gproulx ]
Bonjour à tous!J'ai un petit problème. Je dois créer un cookie, seulement j'ai jamais fait cela et n'étant que graphiste pour site web, la programmati
Pour la fermeture du navigateur [ par Philippe ]
Salut,Comment savoir si une personne ferme le navigateur et non la page en cours onUnload dans le body ne marche pas parce que c'est aussi effectuer q
Liste des éléments d'une page [ par Ekik ]
Bonjours, Je voudrais savoir comment faire pour récupérer tout les éléments que j'ai sur ma page. J'ai essayé avec document.all, window.all différente
Informations entre pages [ par Kevb37 ]
Salut, je suis debutant en javascript (comme en html) et je voudrait savoirsi il etait possible de passer des inforamtions entre deux pages.Par exempl
Restituer dans un formulaire les informations précédement renseignées [ par mcflysupersonic ]
Bonjour à tous,Voici ce que je souhaiterai faire:Un utilisateur rempli les champs d'un formulaire puis en cliquant sur un bouton "continuer" se retrou
Javascript : Calque et Iframe [ par gfo ]
Bonjour tout le monde,J'ai un gros problème Super Urgent sur la gestion des Iframes et des calques.PB 1 : Sur une page 1 je gère une iframe. Cette ifr
ouvrir une page dans la fenetre active du navigateur? [ par billy21121 ]
Bonjour, voila je suis entrain de créer un site intranet en php et je suis amené a utuliser le javascript pour executer un petit calcul sur le poste c
Faire apparaitre et disparaitre des éléments dans une page [ par pompon_56 ]
Salut salut,Comme indiqué dans le titre je cherche un script afin de permettre l'affichage ou la disparition d'éléments sur une page. A vrai dire, ce
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|