11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous!
J'aimerais avoir une variable globale côté client. Mon problème est que mon javascript est rechargé à chaque reload de la page et du coup ma variable se réinitialise (ce que je ne veux pas bien entendu :s).
Je me suis penché sur le javascript parce que je cherchais à faire ça du côté client, mais peut-être y a-t-il des solutions très simples autrement qu'en javascript?

Merci d'avance pour votre aide
Modifié par arnaultp (25 Jul 2007 - 15:07)
bonjour,

si tu veux le faire en javascript tu pourrais pour cela utiliser les cookies non ?

Si tu codes en Php tu peux utiliser les variables $_SESSION Smiley cligne
Modifié par rafale29 (20 Jul 2007 - 15:30)
Bonjour à tous!
Je reprends ce sujet parce qu'il n'est pas tout à fait résolu Smiley ohwell
En fait, il s'avère qu'il me faut cliquer deux fois sur mon lien pour que le cookie soit bien créé...

Voici mon javascript :


function cre_cook0(nom,contenu)
{
	document.cookie = nom + "=" + escape(contenu);
}
 
function cre_cook(nom,contenu,jours)
{
	var expireDate = new Date();
	expireDate.setTime(expireDate.getTime() + jours*24*3600*1000);
	document.cookie = nom + "=" + escape(contenu) + ";expires=" + expireDate.toGMTString();
}

function ecrire_cook(nom)
{
	alert("j'étais :"+lit_cook(nom));
	if( lit_cook(nom) == "" || lit_cook(nom) == "0" )
	{
		document.cookie = nom + "=" + escape('1');
	}
	else if( lit_cook(nom) == "1" )
	{
		document.cookie = nom + "=" + escape('0');
	}
	alert("je suis :"+lit_cook(nom));
}

function lit_cook(nom)
{
	var deb,fin;
	deb = document.cookie.indexOf(nom + "=");
	if (deb >= 0) 
	{
		deb += nom.length + 1;
		fin = document.cookie.indexOf(";",deb);
		if (fin < 0) 
			fin = document.cookie.length;
		return unescape(document.cookie.substring(deb,fin));
	}
	return "";
}
     
function tue_cook(nom)
{
	cre_cook(nom,"",-1);
}


La fonction appelée dès que je clique sur mon lien est ecrire_cook(nom). Et à mes deux premiers click, je reçois les message : "j'étais : " (à comprendre j'étais vide) puis "je suis : 1"...

Voilà, c'est un peu embêtant Smiley ohwell
Merci d'avance pour votre aide
Hello,
arnaultp a écrit :
Voilà, c'est un peu embêtant Smiley ohwell

Je n'ai pas le même comportement que toi. Avec quel navigateur le constates-tu ? As-tu un exemple en ligne ?
Je n'ai pas d'exemple en ligne malheureusement.
Et en lisant ton message tu m'as mis le doute. A l'origine sous IE7, j'ai donc testé tout de suite avec Firefox 2.0 (je ne l'avais pas encore fait) et là...même résultat Smiley ohwell
Donc il semblerait que ça vienne de la machine? Parce que je suis en local?

<edit> en allant regarder les cookies dans Firefox , je me suis en fait aperçu que deux cookies étaient créés Smiley ohwell avec deux chemins différents bien entendu...................
Voilà toutes mes confuses, et merci de ton aide</edit>

Modifié par arnaultp (24 Jul 2007 - 16:08)
Je pensais que ce serait simple mais en fait non Smiley ohwell
Donc lorsque j'appelle ma fonction pour la première fois, le "chemin" (c'est ce que me dit firefox) est du style "/G:/monRepertoire/monSousRepertoire/". Et au deuxième appel le chemin est différent. Cette fois il y a un hôte : localhost (ce qui est logique vu mon environnement de travail) et le chemin est : "/unAutreRepertoire/".
Je me suis donc dit il fait que je change :

document.cookie = nom + "=" + escape('1');


en :


document.cookie = nom + "=" + escape('1') + "path= /unAutreRepertoire/";


Sauf que ça ne marche toujours pas (logique il manque l'hôte). Sauf que je n'arrive pas à l'ajouter Smiley bawling

Quelqu'un qui s'y connaît un peu avec les cookies ici? Au pépites de chocolat c'est les meilleurs Smiley biggrin
Salut Smiley cligne ,

je ne sais pas si cela te poserait problème mais pourquoi ne pas créer ton cookie directement à la racine du site (avec path = '/'). Du coup il serait accessible de n'importe où...

A+
Tu veux dire qu'en mettant :
document.cookie = nom + "=" + escape('1') + ";path=/";
ça ne marche pas ? Smiley rolleyes
Modifié par Heyoan (24 Jul 2007 - 17:21)
Re-Salut,

comme tu m'as mis le doute j'ai refait le test suivant :

[b]test.html[/b] (placé dans le répertoire [i]/test/[/i])

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test cookie</title>
<script type="text/javascript">
//fonction écrire cookie
function EcrireCookie(nom,valeur) {
	var expDate = new Date();
	expDate.setTime(expDate.getTime() + (365 * 24 * 3600 * 1000));
	document.cookie = nom + "=" + escape(valeur) + ";expires=" + expDate.toGMTString() + ";path=/";
}

window.onload = EcrireCookie("test", 2); 
</script>
</head>
<body>
</body>
</html>

avec EasyPhP et Wamp, avec 127.0.0.1 et localhost --> à chaque fois c'est bon : j'ai bien mon path = / Smiley rolleyes
Non mais je crois que je suis très fatigué Smiley ohwell
L'erreur venait du fait que je lançais ma page comme n'importe laquelle, et du coup le chemin était: "file://monRepertoire/monFichier". Alors qu'il fallait que je lance ma page par le serveur php (je crois qu'on appelle ça comme ça) avec l'adresse suivante : "localhost/monAlias/monFichier".
Voilà honte à moi Smiley confus
Merci quand même à tous ceux qui se sont penchés sur ce problème...