Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/03/2011, 11h00   #1
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 1
Points : 1
Par défaut Cookies et compteur de visite

Bonjour,
J'ecris un petit script qui affiche le nom d'un visiteur, et le nombre de visite de ce dernier. Le tout est stocké dans un cookie. C'est un exercice que je fais par rapport a mes cours en javascript et ca ne fonctionne pas chez moi. Sur internet explorer il m'affiche comme erreur "objet attendu" ligne 11 là ou il y a la variable nom = getCookie.

fichier html :
Code :
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
 
<html>
	<head>
		<title>Exercices</title>
 
		<script type="text/javascript" src="javascrupt.js"></script>
	</head>
	<body>
 
 
	<script type="text/javascript">
var nom = getCookie('visiteur');
var visites;
if (nom == ""){
    nom = prompt("Votre nom :");
    setCookie("visiteur", nom, 365);
    visites = 0;  
} else 
    visites = Number( getCookie("nombreVisites") );
Visites ++;
setCookie("nombreVisites", Visites, 365);
 
document.write("<p class='message'>Bonjour " + nom + ". C'est votre " + visites + "<sup>ème</sup> visite.</p>");
	</script>
	</body>
</html>
Fichier javascript :

Code :
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
function setCookie(name, value, days){
var text = name + "=" + escape(value);
 
if(days !=0){
	var ms = days * 24*60*60*1000;
	var now = new Date();
	now.setTime(now.getTime() + ms);
 
	text  += ";expires=" + now.toGMTString();
	}
	document.cookie = text;
}
 
 
function getCookie(name){
var debut = document.cookie.indexOf(name);
if(debut  ==-1){
	return "";
	}
var fin = document.cookie.indexOf(";", debut) 
if(fin == -1){
	return document.cookie.length;
	}
 
var contenu = document.cookie.substring(debut + name.length +1, fin);
	return unescape(contenu);
	}
 
function deleteCookie(name){
	setCookie(name, "", -1);
}
Knutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 15h59   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 932
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 932
Points : 4 752
Points : 4 752
Bonjour,
es tu sûr du nom de ton fichier javascrupt.js, de son chemin par rapport à ton document...
NoSmoking est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 22h57   #3
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 1
Points : 1
Le fichier javascrupt est dans le même dossier que le fichier html qui l'appelle donc oui je ne comprends pas pourquoi ca fonctionne pas chez moi.
Knutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 03h37   #4
Membre Expert
 
Avatar de Eric2a
 
Homme Eric Garidacci
Inscription : septembre 2005
Messages : 1 057
Détails du profil
Informations personnelles :
Nom : Homme Eric Garidacci
Âge : 41

Informations forums :
Inscription : septembre 2005
Messages : 1 057
Points : 1 564
Points : 1 564
Salut,

La méthode de recherche dans la fonction getCookie() n'est pas très fiable.

À comparer avec celle de la fonction readCookie située sur le cours : La gestion des cookies en JavaScript.

Un exemple de code utilisant ces fonctions...
Code html :
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
<!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" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>Cookies</title>
 
	<style type="text/css">
		.bloc{margin-left:32px;}
		#message {color:#003366;font-size:1.2em;}
	</style>
 
	<script type="text/javascript">
		// gestion des cookies
		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);
		}
 
		// Demo
		var pseudo=readCookie('pseudo');
		pseudo=(pseudo)?pseudo.replace(/\</g,'&lt;').replace(/\>/g,'&gt;'):'invité(e)';
 
		var visites=readCookie('visites');
		if(visites==null)visites=0;
		createCookie('visites',++visites,7);
 
		function newPseudo(){
			eraseCookie('pseudo');
			pseudo=document.getElementById('pseudo').value;
			if(pseudo!='')createCookie('pseudo',pseudo,7);
		}
 
		window.onload=function(){
			document.getElementById('message').innerHTML='Bonjour <strong>'+pseudo+'<\/strong>, ceci est votre <strong>'+visites+'<\/strong><sup>è'+((visites==1)?'r':'m')+'e<\/sup> visite.';
		}
	</script>
</head>
<body>
	<h1>Cookies</h1>
	<p>Bien entendu la demo fonctionne si les cookies sont acceptés par le navigateur.</p>
	<p>
		À chaque actualisation de la page, le script determine la présence du cookie 'pseudo'. Si ce dernier n'existe pas, le script affichera 'invité(e)'<br />
		Le cookie 'visites' permet de compter le nombre d'affichage de la page.
	</p>
	<div class="bloc">
		<p id="message"></p>
		<form action="" method="get" onsubmit="newPseudo();history.go(0);return false;">
			<p>
				<input type="text" id="pseudo" name="pseudo" value="" /> <input type="submit" value="Nouveau pseudo" /><br /><br />
				<button onclick="history.go(0);">Actualisation de la page</button>**
				<button onclick="eraseCookie('visites');history.go(0);">Remise à zéro du nombre de visites</button>**
				<button onclick="alert(document.cookie);return false;">document.cookie</button>
			</p>
		</form>
	</div>
</body>
</html>
__________________

N'oubliez pas le vote des messages utiles ainsi que le Tag [Résolu].

Mon Site Web : Corse - Actualité, Météo, Vidéos, Logiciels, ...
Eric2a est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 06h59   #5
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 932
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 932
Points : 4 752
Points : 4 752
Javascript est sensible à la casse Visites est différent de visites, à voir également.
NoSmoking est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 14h12   #6
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 1
Points : 1
Merci!
Effectivement avec votre code cela fonctionne, mais je ne comprends toujours pas pourquoi avec le mien ça cloche.
Knutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 14h23   #7
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 932
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 932
Points : 4 752
Points : 4 752
Citation:
Envoyé par Knutt Voir le message
Merci!
Effectivement avec votre code cela fonctionne, mais je ne comprends toujours pas pourquoi avec le mien ça cloche.
as tu essayé en tenant compte de la casse V différent de v
NoSmoking est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2011, 23h07   #8
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 1
Points : 1
Merci... maintenant ça marche, je vais aller me jeter contre un mur
Knutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 08h33   #9
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 932
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 932
Points : 4 752
Points : 4 752
Citation:
Envoyé par Knutt Voir le message
Merci... maintenant ça marche, je vais aller me jeter contre un mur
il est toujours intéressant de connaître l'origine du dysfonctionnement, on reste un peu sur notre faim...
NoSmoking est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 19h36   #10
Invité de passage
 
Inscription : février 2011
Messages : 13
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 13
Points : 1
Points : 1
Apparement c'était bien le V majuscule qui bloquait le tout...
Knutt est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h27.


 
 
 
 
Partenaires

Hébergement Web