IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Simplification de code (cookie et url)


Sujet :

JavaScript

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Juin 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 2
    Par défaut Simplification de code (cookie et url)
    Bonjour,
    J'ai récupéré un script pour l'affichage d'une fenetre volante. Il fonctionne un peu trop bien car la fenetre s'affiche a chaque fois qu'on arrive sur une nouvelle url (et la possibilite d'arrêter l'affichage mais uniquement pour cette page (url)) . J'aimerais le transformer pour l'affichage une seule fois (a partir du mon ou l'internaute à dit stop). ca parait simple à faire (mettre toujours la meme variable dans le cookie plutot que l'url) mais je n'y arrive pas. Un petit coup de main serait le bienvenu :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    	function setGetVarFromURL (getVar)
    	{
    		var query	= window.location.search.substring(1);
    		var vars	= query.split("&");
    		for ( var i=0; i<vars.length; i++)
    		{
    			var pair = vars[i].split("=");
    			if (pair[0] == getVar)
    			{
    				return pair[1];
    			}
    		} 
    		return false;
    	}
     
    	function sourceListener ( )
    	{
    		var source = setGetVarFromURL('source');
     
    		if (source == "popin-homme" || source == "popin-femme")
    		{
    			setCookie ( source );
    		}
    	}
     
    	function setCookie ( value )
    	{
    		var cookieLife	= 30; // nombre de jours de vie du cookie
    		var cookieName	= "COSMA_POPIN";
    		var cookieStart	= new Date();
    		var cookieStop	= new Date();
     
    		cookieStop.setTime ( cookieStart.getTime() + (cookieLife * 24 * 60 * 60 * 1000) );
     
    		document.cookie = cookieName + "=" + value + ";expires=" + cookieStop.toGMTString();
     
    	}
     
    	function getCookie ( )
    	{
    		var cookieName	= "COSMA_POPIN";
    		var cookieValue	= document.cookie.match ( cookieName + '=(.*?)(;|$)' );
     
    		if ( cookieValue )
    			return ( unescape ( cookieValue[1] ) );
    		else
    			return null;
    	}
     
    	function AfficheOuMasqueLaPopIn ( idDeLaPopIn )
    	{
    		var cookieVal = getCookie ( );
     
    		switch (cookieVal) 
    		{ 
    			case "popin-homme":
    				document.getElementById(idDeLaPopIn).style.display = 'none';
    				break;
    			case "popin-femme":
    				document.getElementById(idDeLaPopIn).style.display = 'none';
    				break;
    			default:
    				document.getElementById(idDeLaPopIn).style.display = 'block';
    				break;
    		} 	
    	}
     
    	function AnimerLaPopIn ( )
    	{
    		var idDelaPopIn		= 'popin';
    		var PositionDeFin	= 560;
    		var popIn 			= document.getElementById(idDelaPopIn);
    		var popInPosition 	= parseInt ( popIn.style.left );
     
    		if ( popInPosition < (PositionDeFin-5) )
    		{
    			var wDifference 								= PositionDeFin-popInPosition;
    			var wProgression								= parseInt ( wDifference/20 );
    			var wNouvellePosition							= parseInt ( popInPosition+wProgression );
    			document.getElementById(idDelaPopIn).style.left	= wNouvellePosition+"px";
    			setTimeout ( "AnimerLaPopIn ()", 1 );
    		}
     
    	}
     
    	//exécution automatique de l'écouteur:
    	sourceListener ( );

    Merci

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ton erreur vient de là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var cookieValue	= document.cookie.match ( cookieName + '=(.*?)(;|$)' );
    l'argument du match n'est pas une expression régulière, du coup, ta fonction cherche si elle trouve la chaine
    COSMA_POPIN=(.*?)(;|$)
    or, je ne pense pas que ton cookie ai pour valeur "(.*?)(;|$)"

    Essaye avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var cookieValue	= document.cookie.match ( /COSMA_POPIN=(.*?)(;|$)/ );
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Nouveau candidat au Club
    Inscrit en
    Juin 2005
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 2
    Par défaut manqué
    je en sais pas si c'est une erreur. simplement le code n'est pas écrit pour / par moi.

    on tout cas, ça ne change rien. il s'affiche sur chaque variable d l'url et le cookie ne fonctionne que par variable.

    merci tout de même

Discussions similaires

  1. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 19h28
  2. Simplification de code
    Par lodan dans le forum Langage
    Réponses: 2
    Dernier message: 31/08/2006, 21h51
  3. Simplification de code (suite)
    Par Jeffboj dans le forum Access
    Réponses: 1
    Dernier message: 12/04/2006, 22h34
  4. simplification de code
    Par Jeffboj dans le forum Access
    Réponses: 11
    Dernier message: 11/04/2006, 15h09
  5. [c#] Simplification de code
    Par Revan012 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/02/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo