Cacher une "div" pendant un certain temps

Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009 - 3 mai 2009 à 17:25
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 9 mai 2009 à 14:16
Bonjour,



Voilà que depuis hier je me suis mis en tête de faire disparaitre une "div", en cherchant un petit peu j'ai trouvé un moyen très simple de le faire grâce à l'appel d'une fonction. Seul problème, quand l'utilisateur rafraichît la page, cette fameuse div revient !



J'ai donc cherché du côté des cookies, mais je n'ai rien trouvé de bien utile.




Pourriez-vous m'aider pour mon petit soucis ? Merci d'avance !

33 réponses

Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
4 mai 2009 à 09:24
Bonjour,

tu mémorises l'état ( caché/visible) du div dans ce cookie
en chargeant la page, tu lis le cookie et tu caches
    ou tu montres le div en fonction du contenu de ce cookie
le "seul" problème qu'il te reste c'est : quand le div doit-il
    être visible ?

Cordialement [mon Site] [M'écrire] Bul
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
4 mai 2009 à 17:46
Okay, voilà ce que j'ai fais :

Voici mes fonctions qui sont dans la page entete.htm (page présente de partout, car le site est fait de PHP et donc la page entete.htm est incluse dans chaque page) :

function EcrireCookie(nom, valeur)
{


var argv=EcrireCookie.arguments;
var argc=EcrireCookie.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=nom+"="+escape(valeur)+
((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 LireCookie(nom)
{


var arg=nom+"=";
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 "0";
}

      function CookieVote() {
          var date=new Date;
//date.setMonth(date.getHour()+2);
EcrireCookie("vote", "1", "30000");
   }
  
 

-------------------------------------------------------------------------------
Biensur les bornes <SCRIPT langage='javascript></SCRIPT> sont présente dans le code, voici maintenant le code de la page ou se trouve le bouton de vote.

<SCRIPT language="javascript">
var avote == LireCookie("vote");
if (avote == "1")  {
Masquer_OBJ('vote');
} else {
Afficher_OBJ('vote');
}


</SCRIPT>

<FORM>
[************** ]
</FORM>

-------------------------------------------------------------------------------
Et pourtant ça ne marche toujours pas
Quelqu'un pourrait il m'éclairer ?
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
4 mai 2009 à 17:48
Hu, j'ai pas trouvé comment éditer, juste pour préciser que les fonctions :
Afficher_OBJ();
Masquer_OBJ();

Fonctionnent, et je crois même les avoir prisent ici.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
5 mai 2009 à 10:10
tu te complique la vie avec tes cookies....

window.onload=function()
{ if ( document.cookie ) le_div.style.display="none";
else le_div.style.display="inline";
var da = new Date();
var d = new Date( Date.parse(da) + ( 1000*60*60*24*365 ) );
document.cookie = "on s'en fiche" +
";expires=" + d.toGMTString() + ";" ;
}

donc, si le cookie existe ==> cache le div
sinon, on le montre

il reste, comme je disais, à voir quand on veut le réafficher
ce div, car le cookie est créé pour ~1 an
et quand c'est nécessaire donc, il "suffit" de le "détruire"
c'est à dire l'écrire avec une date "expires" dépassée.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
6 mai 2009 à 13:36
Aïe désolé mais je n'arrive toujours pas à faire disparaitre cette foutue "div", voilà ce que j'ai sur ma page :

<SCRIPT language="javascript">
window.onload=function()
{


 if { (document.cookie) vote.style.display="none";
  }
  else {                  
  vote.style.display="visible";
  var da = new Date();
  var d = new Date(Date.parse(da) + (1000*60*60*2));
  document.cookie = "vote" +
";expires=" + d.toGMTString() + ";" ;
}
  } 
</SCRIPT>



<FORM>
[**** ]
</FORM>

------------------------------------------------------------------------------

Malheureusement le div ne se cache toujours pas, enfin si, grace à la fonction "Masquer_OBJ()", mais quand on actualise la page, le div revien :x
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
6 mai 2009 à 13:45
il faut respecter la syntaxe html + javascript

les debugger te le disent d'ailleurs
Navigateurs |Quelques Explications |----
Chrome
, contrôler page actuelle / Options pour développeurs
/ Console Javascript, ----
FireFox
, Outils / Console d'erreurs
et mieux : télécharger FireBug, ----
Internet
Explorer
, activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS, ----
K-Meleon
, utils / Cons, ----
Opera
, utils / Asole d'erreurs, ----
Safari
, Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
----

et
comme tu fais ( par exemple avec FF ) :

Erreur : missing ( before condition
Fichier Source : file:......Ligne : 5, Colonne : 4
Code Source : if { (document.cookie) vote.style.display="none";

avec une flêche qui pointe le {

if  (conditions)
       { actions si vrai }
else { action si faux }

@+
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
6 mai 2009 à 13:47
sans préjuger du reste...
ni de ( je me re cite )   il reste, comme je disais, à voir quand on veut le réafficher

                                ce div, car le cookie est créé pour ~1 an
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
6 mai 2009 à 13:49
Oui pour l'expiration j'avais vu, c'était juste pour le teste le 1 an, merci de tes réponses rapides et précisent !
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
6 mai 2009 à 14:18
Warf, désolé d'abuser de ton temps Bul3, mais finalement mon problème n'est toujours pas réglé.
Ca a l'air de marcher, mais le problème c'est que maintenant, dés que j'ouvre la page le bouton disparrait !

Voici mon code (simplement la partie qui vérifie si le cookie est présent)

<SCRIPT language="javascript">


window.onload=function()
{


 if  (document.cookie) { vote.style.display="none";
  }
  else {                  
  vote.style.display="visible";
  var da = new Date();
  var d = new Date(Date.parse(da) + (1000*60*60*2));
  document.cookie = "vote" +
";expires=" + d.toGMTString() + ";" ;
}
  } 
</SCRIPT>

--------------------------------------------------------------------------------
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
6 mai 2009 à 14:25
>> mais le problème c'est que maintenant, dés que j'ouvre la page le bouton disparrait !
normal... si ça a fonctionné, le cookie existe.
 ( je me re cite )   il reste, comme je disais, à voir quand on veut le réafficher
                       ce div, car le cookie est créé pour ~1 an
( on peut le détruire manuellement ou dans le navigateur
  et par javascript bien entendu ... quand il le faut !!!!!!! )
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
6 mai 2009 à 16:36
Mais j'ai pourtant fait le necessaire pour le détruire (FireFox => Effacer mes traces => Cookie de coché) et toujours rien.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
7 mai 2009 à 10:39
tu peux nous mettre l'extrait nécessaire
pour qu'on voit, qu'on puisse tester  ?
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
7 mai 2009 à 16:53
Voilà ce que je peux te fournir, si tu en veux plus je pourrais aussi te le donner,

Page vote (là ou le bouton à cacher est situé) :

-------------------------------------------------------------------------------

<SCRIPT language="javascript">


window.onload=function()
{


 if  (document.cookie) { vote.style.display="none";
  }
  else {                  
  vote.style.display="visible";
  var da = new Date();
  var d = new Date(Date.parse(da) + (1000*60*60*2));
  document.cookie = "vote" +
";expires=" + d.toGMTString() + ";" ;
}
  } 
</SCRIPT>


</SCRIPT>


Pensez à voter toutes les 2H, une récompense vous attend ingame !

<FORM>
[http://img.root-top.com/topsite/mmorpg/banner.gif" border="0" alt="" >
</FORM>

-------------------------------------------------------------------------------

Entête de la page (page chargée en première) :

--------------------------------------------------------------------------------

<html>
<head>
<title>Kunai Online - Index</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="shortcut icon" href="http://www.favicon.cc/favicon/619/25/favicon.ico">
</head>



  ----

         

   ,
 

</html>
<SCRIPT language="javascript">


 


function getCookieVal(offset)
{


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


    //----------------------------------------------
// Affichage d'un Objet déclaré dans le document...
//----------------------------------------------
function Affiche_OBJ(){
  var Arg = arguments;  // Récup liste des arguments passée à la fonction
  var Obj;
  for( var i=0; i< Arg.length; i++){               // On parcours la liste
    Obj = document.getElementById( Arg[i]); // Récup Objet correspondant
    if( Obj){
      Obj.style.visibility = "visible";
      //-- Ou autre méthode
      Obj.style.display = "";
    }
  }
}
//----------------------------------------------
// Masquage d'un Objet déclaré dans le document...
//----------------------------------------------
function Masque_OBJ(){
  var Arg = arguments;  // Récup liste des arguments passée à la fonction
  var Obj;
  for( var i=0; i< Arg.length; i++){               // On parcours la liste
    Obj = document.getElementById( Arg[i]); // Récup Objet correspondant
    if( Obj){
      Obj.style.visibility = "hidden";
      //-- Ou autre méthode
      Obj.style.display = "none";
    }
  }
}
 
 
</SCRIPT>


-------------------------------------------------------------------------------

Encore merci de ton aide !
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mai 2009 à 08:36
pour moi, ça baigne ( testé uniquement avec FF,
mais aucune raison avec les autres ! )


<script type= "text/javascript">
window.onload=function()
{
    var vote=document.getElementById("vote");
    alert(document.cookie);
 if  (document.cookie) { vote.style.display ="none";    }
  else {    vote.style.display="visible";
            var da = new Date();
            var d = new Date(Date.parse(da) + (1000*60*60*2));
            document.cookie = "vote" +
                ";expires=" + d.toGMTString() + ";" ;
}
  }
</script>

<form>
   
   
       

</form>



et tu avais 2 </script>

( div probablement inutile, , mais bon ... )
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mai 2009 à 08:38
reste à savoir quand il faut sucrer ce cookie
tu ne peux pas demander aux utilisateurs de le faire
  avec leurs navigateurs... si ???
@+
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mai 2009 à 09:43
et...j'ai testé avec F5, et non pas en cliquant sur le lien !!! :
car là, mon foie, on recharge la page puis ( ou avant ? ) on la remplace
par la réponse de http://www.root-top.com/topsite/mmorpg/in.php?ID=1091
alors.....
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
8 mai 2009 à 10:51
Et bien ça ne marche toujours pas chez moi, au chargement de la page le bouton s'affiche moin d'une seconde pour ensuite disparaitre.
J'ai oublié de préciser une chose peut être importante, mon site est codé en PHP et chaque page est incluse depuis l'index, (grâce à la fonction GET et à un tableau listant les pages autorisées), voici ce qu'inclus l'index, dans l'ordre :

- L'entête (entete.htm, rien de spécial, comporte simplement la banniere du site)
- Le menu (là aussi rien de spécial, si se n'est qu'il détecte si l'utilisateur est loggué et qu'il affiche remplace le bouton Connexion par Déconexion, si c'est le cas)
- La page centrale (dans ce cas vote.php).

Voilà peut être que ça pourra t'éclairer.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
8 mai 2009 à 11:16
>>Et bien ça ne marche toujours pas chez moi, au chargement de la page le
bouton
>>s'affiche moins d'une seconde pour ensuite disparaitre.

euh....
sans rien faire ?
essaye mon exemple "tel quel"... ça baigne

j'ai d'ailleurs dis une connerie ( j'en dirais d'autres :! )
je me cite en complétant :
on recharge la page puis  on la remplace
par la réponse de http://www.root-top.com/topsite/mmorpg/in.php?ID= 1091

comme il y a un target on ouvre une nouvelle page ! ,
donc ça baigne

index.php = entete.htm + menu.htm + vote.php
ça ne doit pas géner ? mais va savoir...
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
8 mai 2009 à 11:58
J'ai essayé ton exemple, ça ne fonctionne toujours pas ... Je ne sais vraiment pas se qui cloche, FireFox ne m'indique aucune erreur.

Et oui 'sans rien faire', je clique simplement sur le bouton "Vote" qui inclus la page vote au milieu, et le bouton apparait l'espace d'une demi seconde pour disparraitre ensuite. C'est à une plus rien y comprendre.
0
Hepoc Messages postés 22 Date d'inscription mercredi 3 septembre 2008 Statut Membre Dernière intervention 9 mai 2009
8 mai 2009 à 12:07
Je crois avoir un début de réponse, en reprenant ton code et inversant les actions (affichage si le cookie existe) le bouton s'affiche, je peux donc en déduir que le cookie existe, seul problème mon site n'utilise pas de cookie mais des variables de session (toujours en PHP), il faudrait donc peut être définir un champ propre au vote dans le cookie, je vais essayé et je poste si ça marche.
0
Rejoignez-nous