Forum-webmaster
Technique - programmation => Javascript / DOM / Ajax => Message commencé par: overthemoon le le 16-09-2004 a 23:58:54

Titre: Un pop-up qui ne s'ouvre qu'une fois MAIS pour TOUT le site
Posté par: overthemoon le le 16-09-2004 a 23:58:54

Bonjour,

J'ai actuellement un jeu sur le site (http://www.spielbergfansite.com/leterminal/ (http://www.spielbergfansite.com/leterminal/)) se lançant par un système de pop-up (il s'ouvre quelque soit la page du site).

Pour ne pas importuner les visiteurs, je voudrais qu'il ne s'ouvre qu'une fois par session, et ceci sur tout le site, pas uniquement sur une page (en cliquant sur un lien vers une page différente, il ne s'ouvrira pas à nouveau, comme c'est le cas actuellement).

Voici le script que j'utilise, il se trouve dans un fichier nommé "terminal.js", que j'appelle dans chaque page HTML.

----- CODE -----
function OuvrePopup() {
   // Verifie que le cookie "terminal" n'est pas present
   if (GetCookie("terminal")==null) {
      var winleft = (screen.width-500)/2;
      var wintop = (screen.height-300)/2;
      windowprops = "width=500, height=300, top=" + wintop + ", left=" + winleft + ", location=no, scrollbars=no, menubars=no, toolbars=no";
      window.open("http://www.spielbergfansite.com/leterminal/concours/terminal_pop1.html", "terminal", windowprops);
      var pathname=location.pathname;
      var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
      var date_exp = new Date();
      date_exp.setTime(date_exp.getTime()+(12*3600*1000)); // 12 heures
      SetCookie("terminal","ok",date_exp,myDomain);
   }
}

function ViderCookie() {
      var pathname=location.pathname;
      var myDomain=pathname.substring(0,pathname.lastIndexOf('/')) +'/';
      var date_exp = new Date();
      date_exp.setTime(date_exp.getTime()-(1000)); // Heure deja expiree
      SetCookie("terminal","",date_exp,myDomain);
}

function SetCookie (name, value) {
   var argv=SetCookie.arguments;
   var argc=SetCookie.arguments.length;
   var expires=(argc > 2) ? argv[2] : null;
   var path=(argc > 3) ? argv[3] : null;
   var domain=(argc > 4) ? argv[4] : null;
   var secure=(argc > 5) ? argv[5] : false;
   document.cookie=name+"="+escape(value)+
      ((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
      ((path==null) ? "" : ("; path="+path))+
      ((domain==null) ? "" : ("; domain="+domain))+
      ((secure==true) ? "; secure" : "");
}

function getCookieVal(offset) {
   var endstr=document.cookie.indexOf (";", offset);
   if (endstr==-1)
      endstr=document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
   var arg=name+"=";
   var alen=arg.length;
   var clen=document.cookie.length;
   var i=0;
   while (i<clen) {
      var j=i+alen;
      if (document.cookie.substring(i, j)==arg)
return getCookieVal (j);
i=document.cookie.indexOf(" ",i)+1;
if (i==0) break;}
   return null;
}

OuvrePopup();
----- CODE -----

J'ai vérifié dans le dossier des cookies ce qui est créé. J'imaginais un fichier unique du type "mon_nom@terminal[1].txt" (ce qui je pense permettrait une reconnaissance sur tout le site), mais au lieu de cela, il se crée plusieurs cookies du type "mon_nom@lire[1].txt", "mon_nom@actus[1].txt" etc ("lire", "actus" étant les noms de répertoire sur mon site).

Si ça peut vous aider, voici ce que le cookie "mon_nom@voir[1].txt" contient:
--- cookie ---
terminal
ok
www.spielbergfansite.com/voir/
1088
1542457984
29662196
3339554880
29662095
*
--- cookie ---

Merci par avance pour votre aide !
David

PS: comme lien utilisé plus haut, je n'ai pas mis la page d'accueil du site, parce qu'elle n'est pas liée à ce fichier "terminal.js", le pop-up s'ouvre en permanence pour les internautes qui voudraient à nouveau y avoir accès.

Titre: Re:Un pop-up qui ne s'ouvre qu'une fois MAIS pour TOUT le site
Posté par: Netah le le 22-09-2004 a 11:19:40

Dans "document.cookie.name" enleve la ligne :

Code:

((path==null) ? "" : ("; path="+path))+


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.