begin process at 2012 05 29 07:05:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

CSS

 > 

Général

 > 

Les cookies magiques...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club
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

Membre Club
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

Membre Club

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

Membre Club
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

Membre Club
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.

1 2

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


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,811 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales