Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1715 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Javascript + probleme lors du chargement d'une page

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Javascript + probleme lors du chargement d'une page

n°1851573
diez
Posté le 15-02-2009 à 23:04:08  profilanswer
 

Bonjour, j'ai une page php membre.php : cette page me liste tous les membres de ma base de données.
exemple de ma page :
<div class="member1-header"> Nom du membre </div>
<div class="member1-content"> Informations sur le membre (age, sex ....) </div>
<div class="member1-header"> Nom du membre2 </div>
<div class="member1-content"> Informations sur le membre2 (age, sex ....) </div>
 
Avec un petit script javascript, lorsque je clique sur une div dont la class fini par -header, cela m'ouvre la class -content associé.
 
Ça marche plutôt bien, le seul problème c'est que lorsque ma page se charge, durant quelques secondes on voit toute la page et ensuite les div dont la class fini par -content sont cachées.
Comment évité que l'utilisateur voit la page entiere se charger et ensuite se refermer ? Y a t-il un moyen pour que la page s'affiche directement sous la bonne forme (les div -content fermées) ??

mood
Publicité
Posté le 15-02-2009 à 23:04:08  profilanswer
 

n°1851605
kurt11
Posté le 16-02-2009 à 02:21:29  profilanswer
 

En ajoutant cette ligne dans ton css ça devrait fonctionner
 
div[class $= "-content"] { display : none;}

n°1851626
FlorentG
Posté le 16-02-2009 à 09:19:36  profilanswer
 

Fait voir surtout la gueule du javascript [:petrus dei]

n°1851646
diez
Posté le 16-02-2009 à 10:35:25  profilanswer
 

Voici le code javascript utilisé dans mon site :
 
/*
DezinerFolio.com Simple Accordians.
 
Author  : G.S.Navin Raj Kumar
Website : http://dezinerfolio.com
 
*/
 
/*
* The Variable names have been compressed to achive a higher level of compression.
*/
 
// Prototype Method to get the element based on ID
function $(d){
 return document.getElementById(d);
}
 
// set or get the current display style of the div
function dsp(d,v){
 if(v==undefined){
  return d.style.display;
 }else{
  d.style.display=v;
 }
}
 
// set or get the height of a div.
function sh(d,v){
 // if you are getting the height then display must be block to return the absolute height
 if(v==undefined){
  if(dsp(d)!='none'&& dsp(d)!=''){
   return d.offsetHeight;
  }
  viz = d.style.visibility;
  d.style.visibility = 'hidden';
  o = dsp(d);
  dsp(d,'block');
  r = parseInt(d.offsetHeight);
  dsp(d,o);
  d.style.visibility = viz;
  return r;
 }else{
  d.style.height=v;
 }
}
/*
* Variable 'S' defines the speed of the accordian
* Variable 'T' defines the refresh rate of the accordian
*/
s=7;
t=10;
 
//Collapse Timer is triggered as a setInterval to reduce the height of the div exponentially.
function ct(d){
 d = $(d);
 if(sh(d)>0){
  v = Math.round(sh(d)/d.s);
  v = (v<1) ? 1 :v ;
  v = (sh(d)-v);
  sh(d,v+'px');
  d.style.opacity = (v/d.maxh);
  d.style.filter= 'alpha(opacity='+(v*100/d.maxh)+');';
 }else{
  sh(d,0);
  dsp(d,'none');
  clearInterval(d.t);
 }
}
 
//Expand Timer is triggered as a setInterval to increase the height of the div exponentially.
function et(d){
 d = $(d);
 if(sh(d)<d.maxh){
  v = Math.round((d.maxh-sh(d))/d.s);
  v = (v<1) ? 1 :v ;
  v = (sh(d)+v);
  sh(d,v+'px');
  d.style.opacity = (v/d.maxh);
  d.style.filter= 'alpha(opacity='+(v*100/d.maxh)+');';
 }else{
  sh(d,d.maxh);
  clearInterval(d.t);
 }
}
 
// Collapse Initializer
function cl(d){
 if(dsp(d)=='block'){
  clearInterval(d.t);
  d.t=setInterval('ct("'+d.id+'" )',t);
 }
}
 
//Expand Initializer
function ex(d){
 if(dsp(d)=='none'){
  dsp(d,'block');
  d.style.height='0px';
  clearInterval(d.t);
  d.t=setInterval('et("'+d.id+'" )',t);  
 }
}
 
// Removes Classname from the given div.
function cc(n,v){
 s=n.className.split(/\s+/);
 for(p=0;p<s.length;p++){
  if(s[p]==v+n.tc){
   s.splice(p,1);
   n.className=s.join(' ');
   break;
  }
 }
}
//Accordian Initializer
function Accordian(d,s,tc){
 // get all the elements that have id as content
 l=$(d).getElementsByTagName('div');
 c=[];
 for(i=0;i<l.length;i++){
  h=l[i].id;
  if(h.substr(h.indexOf('-')+1,h.length)=='content'){c.push(h);}
  if(h.substr(h.indexOf('-')+1,h.length)=='truccontent'){c.push(h);}
 }
 sel=null;
 //then search through headers
 for(i=0;i<l.length;i++){
  h=l[i].id;
  if(h.substr(h.indexOf('-')+1,h.length)=='header'){
   d=$(h.substr(0,h.indexOf('-'))+'-content');
   d.style.display='none';
   d.style.overflow='hidden';
   d.maxh =sh(d);
   d.s=(s==undefined)? 7 : s;
   h=$(h);
   h.tc=tc;
   h.c=c;
   // set the onclick function for each header.
   h.onclick = function(){
    for(i=0;i<this.c.length;i++){
     cn=this.c[i];
     n=cn.substr(0,cn.indexOf('-'));
     if((n+'-header')==this.id){
      ex($(n+'-content'));
      n=$(n+'-header');
      cc(n,'__');
      n.className=n.className+' '+n.tc;
     }else{
      cl($(n+'-content'));
      cc($(n+'-header'),'');
     }
     
    }
   }
   if(h.className.match(/selected+/)!=undefined){ sel=h;}
  }
 }
 if(sel!=undefined){sel.onclick();}
}


Message édité par diez le 16-02-2009 à 10:38:45
n°1851660
FlorentG
Posté le 16-02-2009 à 11:23:21  profilanswer
 

J'voulais dire : le JavaScript où t'appelles ces fonctions ?
 
Genre si tu le fais dans un onload ou ailleurs [:petrus dei]

n°1851668
diez
Posté le 16-02-2009 à 11:48:26  profilanswer
 

Ok, excuse moi;
 
Je fais comme cela :
 
<?php
  $page = $_GET['page'];
  if (($page == "modif_pres_francas" ) OR ($page == "menudock" )) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight');";
   
  if ($page == "Admin_member_add" ) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight');  new Accordian('Admin_member_basic-accordian',5,'Admin_member_header_highlight');";
  if ($page == "Admin_member_modify" ) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight');  new Accordian('Admin_member_mod_basic-accordian',5,'Admin_member_mod_header_highlight');";
 ?>  
 <body onload="<?php echo $load; ?>">
 
Donc oui c'est fait dans le onLoad.


Message édité par diez le 16-02-2009 à 11:49:18
n°1851676
FlorentG
Posté le 16-02-2009 à 12:10:02  profilanswer
 

Ouais ben voilà :D Du coup ça n'est exécuté que lorsque tout est chargé.
 
Il faut l'exécuter dans le domready, ce qui est rigolo à faire crossbrowser. Ne te fait pas chier avec un script pourri, utilise un truc genre jQuery + jQuery UI qui te permettent de gérer les tabs de manière très facile, y compris le chargement dans un dom ready

n°1851684
diez
Posté le 16-02-2009 à 12:28:51  profilanswer
 

Donc ce que tu me conseillerais de faire c'est un truc du genre :
$(document).ready(function () {
     
    news Accordian(....);
});
??
 
En ayant chargé dans ma page jquery.js et accordion.js ?

n°1851685
FlorentG
Posté le 16-02-2009 à 12:33:17  profilanswer
 

Yeah

n°1851687
diez
Posté le 16-02-2009 à 12:34:26  profilanswer
 

J'ai essayé en faisant :
 <head>
  <title> Francas 64 </title>
  <link rel="stylesheet" href="style.css"/>  
  <script type="text/javascript" src="javascript/jquery.js"></script>
  <script type="text/javascript" src="javascript/accordian-src.js"></script>
 </head>    
 <script type="text/javascript">
  <?php
   $page = $_GET['page'];
   if (($page == "news" ) OR ($page == "loginFail" ) OR ($page == "loginSuccess" ) OR ($page == "logout" ) OR ($page == "events" ) OR ($page == "activityCard" )) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight');";
   if ($page == "auterrive" ) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight'); new Accordian('auterrive_basic-accordian',5,'auterrive_header_highlight');";
   if ($page == "formation" ) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight'); new Accordian('formation_basic-accordian',5,'formation_header_highlight');";
   if ($page == "about" ) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight'); new Accordian('about_basic-accordian',5,'about_header_highlight');";
   if ($page == "activityCardDetail" ) $load="new Accordian('menu_basic-accordian',5,'menu_header_highlight'); new Accordian('activity_basic-accordian',5,'activity_accordion_highlight');";
  ?>  
  $(document).ready(function () {
  <?php echo $load; ?>
  alert("t" );
  });  
 </script>
 <body>
 
 
Cependant tous le javascript est désactivé et l'alert n'est meme pas exécuter :s


Message édité par diez le 16-02-2009 à 12:35:10
mood
Publicité
Posté le 16-02-2009 à 12:34:26  profilanswer
 

n°1851690
FlorentG
Posté le 16-02-2009 à 12:38:22  profilanswer
 

Utilise Firefox + l'extension Firebug pour voir clairement les erreurs javascript :)

n°1851692
diez
Posté le 16-02-2009 à 12:45:07  profilanswer
 

Module pour firefox installé;

 

Erreur concernant ce que l'on parle : $(document) is null

 

En cherchant, cela signifie que le jquery n'est pas chargé !?
j'ai pourtant : <script type="text/javascript" src="javascript/jquery.js"></script>

 

je ne comprend pas.


Message édité par diez le 16-02-2009 à 12:50:27
n°1851713
FlorentG
Posté le 16-02-2009 à 13:42:23  profilanswer
 

Hmmm pas normal, ça devrait fonctionner pourtant. Déclare ton script correctement dans le head ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Javascript + probleme lors du chargement d'une page

 

Sujets relatifs
[PHP] Problème lors de création d'un blog Wordpress[javascript] conseils
[PERL]probleme avec boucle ForProbleme 1and1 et Asido ..?
CSS problème de roll over en couleur ....Problème placement de boite en CSS
[Resolu] Problème de synchronisation des données ![ASM-Nasm] Problème de comparaison nombre
Probleme chargement de page et Javascript sous Firefoxprobleme d'arret chargement page lors evenement javascript
Plus de sujets relatifs à : Javascript + probleme lors du chargement d'une page


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR