11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

tout est dans le titre, comment faire pour qu'un message d'accueil ne s'affiche qu'au premier passage sur la page d'index ? J'avais bien essayé une petite fonction avec un flag, mais comme celui-ci se réinitialise à chaque appel de la page, bien sur ça ne marche pas...

Si quelqu'un a une idée ça m'aiderait bien...

Merci d'avance

A+
Philippe
Modifié par filtep (17 Feb 2010 - 10:11)
Salut,

il suffit d'utiliser un cookie (supprimé automatiquement à la fin de la session donc expire = 0).


Edit: un exemple en php (le principe est le même en JavaScript) :
<?php
$afficher_msg = false;
if(!isset($_COOKIE['dejavu'])) {
	setcookie('dejavu', 'oui');
	$afficher_msg = true;
}
?><!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=iso-8859-1" />
<title>Test cookie</title>
</head>
<body>
<?php
if($afficher_msg) {
	echo '<p>Mon message...</p>';
}
?>
</body>
</html>

Modifié par Heyoan (14 Feb 2010 - 17:40)
Bonsoir

eh bien non, pas résolu pour le moment malheureusement.
Après avoir cherché, écumé les forums, tutoriels etc... potassé,pompé et cru avoir tout pigé
je suis arrivé à ça:

[code=javascript]<HTML>
<HEAD>
<SCRIPT language="Javascript">

 
function VerifCookie(Name) { alert('début')
         var search = Name + "=" 
         if (document.cookie.length > 0) { 

// si il existe au moins un cookie 

                   offset = document.cookie.indexOf(search) 
                   if (offset != -1) { 

// si le cookie recherché existe 

                       alert('trouvé') 
                   } 
                   else { 

//le cookie n'existe pas, on le crée
                   document.cookie="moncookie=oui"
                   alert('pas trouvé') 
                   } 
         } 
} 

 

</SCRIPT>
</HEAD>
<BODY onLoad="VerifCookie(moncookie);" >
 
 
</BODY>
</HTML>


Qui ne fonctionne absolument pas, la fonction ne semble même pas appelée car la petite alerte de début que j'ai placé là comme témoin ne s'affiche même pas Smiley decu

Je ne cherche même pas à lire la valeur du cookie car le seul fait de ne pas exister prouve que c'est le premier passage sur cette page.

Je fatigue...

Si vous pouvez m'aider encore un peu. Merci d'avance.
L'apprentissage est difficile !!!

A+
Philippe
Hello,

Tu pourrais essayer ça :
<!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=iso-8859-1" />
<title>Test</title>
<script type="text/javascript">
<!--
var cookieMgr = {
  get: function(name) {
    var o = new RegExp(name + "=([^;]+)").exec(document.cookie);
    return o && unescape(o[1]);
  },

  set: function(name, value, days) {
    var expires = "";
    if (days) {
      expires = "; expires=" +
        new Date(new Date().getTime() + days*24*60*60*1000).toGMTString();
    }

    document.cookie = name + "=" + escape(value) + expires + "; path=/";
  },

  erase: function(name) {
    this.set(name, "", -1);
  }
};

function premeierAffichage() {
	if(cookieMgr.get('dejavu')==null) {
		cookieMgr.set('dejavu', 'oui', null);
		document.getElementById('premeierAffichage').style.display='block';
	}
}

window.onload = premeierAffichage;
-->
</script>
</head>
<body>
<p id="premeierAffichage" style="display:none;">C'est la première fois que vous arrivez sur ce site durant cette session.</p>
<p>Reste du site.</p>
</body>
</html>
Le code JavaScript est de Julien. Smiley cligne
Merci Heyoan pour le code, mais sinon tu peux m'aiguiller sur ce qui cloche dans ce que j'ai écrit Smiley cligne

A+
Philippe
filtep a écrit :
tu peux m'aiguiller sur ce qui cloche dans ce que j'ai écrit
Alors dans le désordre :
* tu dois renseigner un doctype.
* du coup il y a de grandes chances que tu écrives tes balises en minuscules.
* ce n'est pas
<SCRIPT language="Javascript"> 
mais
<script type="text/javascript">
* chaque ligne de JavaScript (à l'exception des conditions) devrait finir par un point-virgule (;)
* d'après mes tests document.cookie.length renvoie toujours 0 avec IE donc ça n'est pas fiable.
* tu n'entres dans le test (normalement) que si au moins un cookie existe... du coup tu ne l'écris jamais si ça n'est pas le cas (à moins d'avoir la chance qu'un autre cookie existe déjà).
* ce n'est pas
<BODY onLoad="VerifCookie(moncookie);" > 
mais
<body onload="VerifCookie('moncookie');">
avec une String et pas une variable.
* ...
Wahou !!! J'ai du boulot... ou puis-je apprendre tout ceci (script en minuscule, etc...) un bon livre à la portée du débutant que je suis ??

Merci encore

A+
Philippe
Merci pour tous ces conseils,
voici ce que ça donne:

[code=javascript]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html> 
<head> 
<script type="text/javascript"> 
 
  
function VerifCookie(Name) { 
         var search = Name + "="  
         
                   offset = document.cookie.indexOf(search)  
                   if (offset != -1) {  
 
// si le cookie recherché existe... bah rien...
 
                         
                   }  
                   else {  
 
//le cookie n'existe pas, on le crée et on affiche un message
                   document.cookie="moncookie=oui" 
                   alert('Ceci est votre première visite')  
                   }  
         }  
 
 
  
 
</script> 
</head> 
<body onLoad="VerifCookie('moncookie');" > 
  <a href="page2.html">Aller à la page 2</a>
  
</body> 
</html>


le message ne s'affiche qu'au premier passage sur la page d'index.
super !!! Smiley biggrin

A+
Philippe