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 :

Souci d'affichage après visibilité d'un bloc


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut Souci d'affichage après visibilité d'un bloc
    Bonsoir,

    Voici le code suivant, certes fonctionnel, qui me pose cependant un souci d'affichage sous Internet Explorer, alors qu'il s'affiche parfaitement sous Firefox :

    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
    <script language="javascript" type="text/javascript">
     
    table_parties = new Array("partie_3", "partie_3-2", "partie_3-3", "partie_3-4");
     
    function changevideo(parti)
    {
    for(x in table_parties)
    {
    if(parti==table_parties[x])
    {
    document.getElementById(table_parties[x]).style.position='relative';
    setTimeout('a=2;',1000);
    document.getElementById(table_parties[x]).style.visibility='visible';
    }
    if(parti!=table_parties[x])
    {
    document.getElementById(table_parties[x]).style.position='absolute';
    document.getElementById(table_parties[x]).style.visibility='hidden';
    }
    }
    }
     
    </script>
     
    <div align="center" id="partie_3" style="position:absolute;visibility:hidden;">
    <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="650" height="420" align="middle">
    <param name="allowScriptAccess" value="sameDomain" />
    <param name="autoStart" value="0" />
    <param name="movie" value="video.swf" />
    <param name="quality" value="high" />
    <param name="bgcolor" value="#ffffff" />
    <param name="FLASHVARS" value="classe=2009-02-21&maxx=3" />
    <embed src="video.swf" FLASHVARS = "classe=2009-02-21&maxx=3" quality="high" bgcolor="#ffffff" width="650" height="420" align="middle" allowScriptAccess="sameDomain" autoStart="0" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
    </object>
    </div>
     
    <div align="center" id="partie_3-2" style="position:absolute;visibility:hidden;">
    ... etc code dans le même style qu'au-dessus, il y a 4 videos l'une en-dessous de l'autre...
    </div>
    Mon souci fait que, lorsque la video s'affiche lors de l'appel de la fonction JS, la video apparaît dans une frame, ok, mais en total décalé à l'écran. Pure souci d'affichage qui est réglé lorsque je touche à la barre séparant les deux frames, mais je vois mal un visiteur faire ce genre de chose Ensuite la video apparaît bien au milieu de la frame.

    Souci lié a priori au code pour rendre visible :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setTimeout('a=2;',1000);
    J'ai essayé un setTimeout à 100, ou à 2000, le temps avant affichange change bien (logique) mais l'affichage de la video débloque toujours en décalé, donc bonjour l'esthétique...

    J'avais déjà eu ce souci avec un bloc <div> sur un site, apparaîssant à peu près sur le même principe (un formulaire avec des cases à cocher, rien à voir avec une video). La seule solution trouvée avait été d'utiliser du code pour modifier dynamiquement la hauteur de la fenêtre (+ 1 pixel). Mais c'était une interface de saisie en interne, un peu perturbant mais ce n'était pas pour des visiteurs qui risquent de trouver mon astuce un peu chiante à chaque clique pour afficher chaque video

    Donc si quelqu'un avait la moindre idée de comment résoudre ce souci d'ordre esthétique cela m'arrangerait fortement, car là, je sèche.

    Merci

    A+

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut

    Dans ton code, il n'y a pas de variable "a" déclaré et il n'est même pas utilisé à part
    setTimeout('a=2;',1000);

  3. #3
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    document.getElementById(table_parties[x]).style.position='relative';
    setTimeout('a=2;',1000);
    document.getElementById(table_parties[x]).style.visibility='visible';
    J'ai essayé un setTimeout à 100, ou à 2000, le temps avant affichange change bien (logique)
    Si je comprends bien tu utilises le setTimeout pour décaler l'affichage ?
    Hors le setTimeout n'est pas bloquant .

    Et comme andry.aime te fait remarquer que
    Dans ton code, il n'y a pas de variable "a" déclaré et il n'est même pas utilisé à part
    ... ton setTimeout ne sert à rien


    ERE

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    Etes-vous sûrs pour le setTimeout qui n'est là que pour reculer le temps avant affichage ? Parce que, ok, le 'a=2' est inutile en soi, j'ai mis un truc totalement neutre, je l'admets mais j'ai pourtant bien un temps d'attente plus long, soit lié à la durée précisée (1000), donc en soi le setTimeout fonctionne, ce qui ne résout certes pas mon souci d'affichage... mais bien que la variation de durée n'influe par sur le souci d'affichage, la variation, on la ressent bien à l'écran A la rigueur, je pourrais faire un truc plus long, j'ai bien fait 2000 (je vais tout de même essayer plus long pour voir), mais mon but n'est pas de rallonger le temps d'affichage, mais bel et bien de supprimer le bug de l'affichage. En fait, je cherche moins à améliorer le setTimeout qu'à trouver une alternative à cette option qui fait un peu trop bricolage...

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Piste
    Etes-vous sûrs pour le setTimeout qui n'est là que pour reculer le temps avant affichage
    Essaie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    alert('temps 0');
    setTimeout("alert('timeout')",3000);
    alert('temps 1');
    Par contre tu pourrais mettre dans ton setTimeout ton instruction (à ajuster bien sûr pour qu'elle soit correctement exécutée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById(table_parties[x]).style.visibility='visible';
    ERE

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    Alors j'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alert('temps 0');
    setTimeout("alert('timeout')",3000);
    alert('temps 1');
    Ce qui donne par ordre d'apparition :
    1- temps 0
    2- temps 1
    3- affichage video bien comme il faut
    4- timeout

    Pour ce qui est de l'instruction dans le setTimeout, c'était mon code initial, mais cela n'arrêtait pas de foirer, je ne sais pas pourquoi, il y avait un souci avec table_parties[x] qui n'était pas reconnue, et j'avais pourtant testé à la fois avec table_parties[x] et '+table_parties[x]+' sinon comment faire autrement ? Cela ne voulait rien donner, donc j'ai fait autrement

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Donc cela fonctionne maintenant ?

    setTimeout (...) il y avait un souci avec table_parties[x] qui n'était pas reconnue
    Quand la fonction du setTimeout s'exécute, il ne connaissait certainement plus table_parties[x] car le code de ta boucle était jà terminé...

    ERE

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    Oui merci cela fonctionne avec le code tel quel mais dès que je supprime les alertes, cela repose souci, l'affichage ne se fait toujours pas. Tu oensais à quoi pour remplacer les alertes ?

    Pour l'instruction dans le setTimeout, hmm, non il me semblait pourtant que c'était dans la boucle, comme maintenant, mais comme j'ai changé pas mal de fois, c'est pas impossible

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut Remplace ton code...
    ... par celui-là; si c'est le fait qu'il faut un décalage de temps avant l'affichage de ta div, cela doit corriger...

    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
     
    <script language="javascript" type="text/javascript">
      //fonction permettant l'appel depuis le setTimeout
      var disp = function (e) {
        return function() {
          e.style.visibility='visible';
        };
      };
     
      table_parties = new Array("partie_3", "partie_3-2", "partie_3-3", "partie_3-4");
     
      function changevideo(parti)
      {
        var elem ;
        for(x in table_parties)
        {
          elem = document.getElementById(table_parties[x]);
     
          if(parti==table_parties[x])
          {
             elem.style.position='relative';
             setTimeout(disp(elem),1000);
          } 
          else {
             elem.style.position='absolute';
             elem.style.visibility='hidden';
          }
        }
      }
     
    </script>
    ERE

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 70
    Points : 40
    Points
    40
    Par défaut
    Je vais devoir absolument étudier ce que tu as fait, entre temps je testais plein de trucs qui ne donnaient rien, mais là, tu as tout bon. Merci beaucoup car ça fonctinne sous IE, je vais vérifier sous FF aussi pour être sûr mais a priori, c'est réglé !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Soucis bdd et affichage apres actualisation de ma page..
    Par riton78 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/02/2009, 22h55
  2. [PowerBuilder] Prob. d'affichage après insertion de contrôle
    Par Oakenshield dans le forum Powerbuilder
    Réponses: 1
    Dernier message: 30/01/2006, 14h37
  3. Réponses: 5
    Dernier message: 29/07/2005, 09h00
  4. Pb d'affichage apres une liste déroulante
    Par loic.440 dans le forum ASP
    Réponses: 13
    Dernier message: 19/01/2005, 14h28
  5. [Swings]Quelques soucis à l'affichage !
    Par julienOriano dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 23/09/2004, 13h22

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