Wait Dialog - DIV - Problème d'affichage (Z-Order)

Résolu
cs_asgarden Messages postés 11 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 26 mai 2006 - 3 mai 2006 à 11:07
cs_asgarden Messages postés 11 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 26 mai 2006 - 3 mai 2006 à 13:33
Bonjour à tous,

J'ai une petite question concernant l'affichage des 
.

J'ai, dans mon application Web, une "fenêtre d'attente" (Wait Dialog) composé d'une
, et affichée lorsque l'utilisateur clique sur un lien entrainant une action un peu longue, afin de le faire patienter et surtout de le prévenir que l'opération est en cours.

Cette application Web comporte pas mal de formulaires, composés eux-même de plusieurs champs, dont des ListBox (<select>).
Systématiquement, ma fenêtre d'attente s'affiche SOUS ces boites de liste. D'après ce que j'ai pu comprendre le problème viendrait des navigateurs eux-même...? Mais ça me parait tout de même trés bizarre.

J'ai fais plusieurs tests, mais systématiquement, mes
s'affichent sous ces champs <select>.
J'ai beau modifier les "z-order", rien à faire. J'ai évidemment parcouru pas mal de forum sans trouver ma réponse. Peut être ai-je mal cherché...

J'ai vu que des sites comme JavaScriptFR.com, par exemple, utilisaient de telles
, notamment pour le menu principal du site, ou encore la fenêtre de "Connexion au compte". J'ai également remarqué qu'avant d'afficher ce menu, l'unique boite de liste de la page était masquée, afin évidemment de palier au problème de superposition.
Evidemment lorsqu'on a qu'une boite de liste, c'est pas bien compliqué, mais lorsqu'on en a plusieurs, et qu'on ignore leur nombre et leur nom ?

J'ai également remarqué que toutes les boites de listes du site JavascriptFR.com n'étaient pas prise en charge par cette fonctionnalité de masquage. Par exemple au moment même ou je vous écris, si j'affiche une
du menu principal (sur la gauche), celle-ci viendra se positionner sous les boites de liste de ma zone de composition du présent message (Style de police, nom de police, taille de police, couleur de la police,thème du forum.

Je suppose que la solution se trouve dans le masquage des boites de listes posant problème.

Alors deux questions :

- Est-il possible d'implémenter une routine générique permettant de lister toutes les boites de liste (<select>) d'une page Web ? Afin de pouvoir les masquer et éventuellement démasquer après affichage de la DIV.

- Existe-t-il une autre solution ? Je m'oriente vers le masquage des boites de liste, parce que je pars du principe que c'est une anomalie du navigateur, à contourner. Mais si ça se trouve l'erreur viens de moi, ou il existe peut être une autre astuce pour palier au problème.

Enfin juste une dernière question optionnelle :
Quelqu'un sait-il exactement pourquoi ce problème se produit ? Pourquoi seules les boites de listes semblent concernée ? Pourquoi par d'autres champs comme les Textbox, les champs de choix de fichier, boutons etc...?

Merci d'avance de vos réponses.
Cordialement.
Cedric.

5 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 mai 2006 à 12:35
bonjour,
>>ma fenêtre d'attente s'affiche SOUS ces boites de liste
   "bug connu" du survol des select par un div avec IE,
         quoiqu'on fasse le select reste au 1er plan.
   des paliatifs : 
         ° cacher les select
         ° mettre un iframe au lieu d'un div
         ° ... ??? ...
Cordialement      Bul.   
Site
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 mai 2006 à 12:37
j'ai oublié :
      ° remplacer les select par un div !
         ( j'ai mis un exemple sur ce site : VESPA )
Cordialement.      Bul.   Site
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
3 mai 2006 à 13:21
>>Cacher les SELECT 
   je pense que c'est la moins "simple" des solutions...
   ( car, par exemple, quand les réafficher ? .... )
   je ne dirais pas la moins bonne, question de goût avant tout.
>>Remplacer les DIV par des IFRAME :
   les IFRAME étaient trés liées à IE
   pas du tout, et là ça baigne directement.
>>Remplacer les SELECT par un DIV
   >>refaire un composant DHTML simulant / remplaçant les boites de liste ?
   oui.
   >>je n'ai malheureusement pas le temps
   on ne peut rien y faire alors.

>>à priori Microsoft ne doit pas vraiment être au courant,
   si, si, bien entendu, mais...d'autres priorités ?
>>Effectivement je confirme que sous FireFox...
    oui, ça, ça marche,
    mais d'autres bugs existent avec ce navigateur ! 
    et non rectifiés depuis longtemps ! 
    mais peut-être ne savent-ils pas ?

cordialement      Bul.   
Site
3
cs_asgarden Messages postés 11 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 26 mai 2006 1
3 mai 2006 à 13:05
Merci pour ta réponse.

Donc cette histoire de survol des SELECT par une DIV est un bug connu de IE ?
Ben à priori Microsoft ne doit pas vraiment être au courant, ou n'en a rien a cirer, car sauf erreur de ma part ce n'est pas la première version de IE qui est sujette à ce problème...?

Effectivement je confirme que sous FireFox le problème n'apparait pas.
(malheureusement le site est optimisé pour IE... On n'a pas toujours le choix)

Concernant les solutions proposées, ce sont effectivement 3 solutions qui me semblent réalisable, et viable.
Cacher les SELECT :
C'est vers cette solution que je comptais me tourner (avant d'en avoir d'autres...).
Mais encore faut-il être capable de récupérer tous les SELECT de la page, afin de les cacher, puis d'éventuellement les afficher à nouveau si besoin. Ca mérite réflexion, mais je suppose qu'avec des fonctions JS du style "selectByTagName()" cela doit être envisageable.

Remplacer les DIV par des IFRAME :
Je ne serais pas contre MAIS... Je connais assez peu les IFRAME.
Idée fausse ou pas, j'ai toujours pensé que les IFRAME étaient trés liées à IE. Et comme j'évite autant que possible de rendre mes sites trop dépendants du navigateur utilisé, j'ai souvent mis les IFRAME de côté (et pourtant cela à l'air trés interessant).
Quoiqu'il en soit, je testerais également cette solution, ou du moins je tenterai de la tester

Remplacer les SELECT par un DIV :
Je ne suis pas certain d'avoir tout compris, mais cela revient à refaire un composant DHTML simulant / remplaçant les boites de liste ? C'est bien ça. L'idée est interessante, mais je n'ai malheureusement pas le temps de la mettre en oeuvre pour le moment.
Mais j'ai fais un saut sur ton site, et j'ai vu de quoi tu parlais. Ca me parait prometteur, mais y'a encore un sacré boulot.

Voila pour conclure, je vais m'orienter vers ta première solution, à savoir un masquage des SELECT.
Je vais chercher du côté des "selectByTagName()". Si quelqu'un à des idées intelligente pour mettre en oeuvre ce script, je suis preneur.

En tout cas merci pour tes réponses Bultez.

Cordialement,
Cedric.
0

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

Posez votre question
cs_asgarden Messages postés 11 Date d'inscription mardi 18 avril 2006 Statut Membre Dernière intervention 26 mai 2006 1
3 mai 2006 à 13:33
Re Bultez,

Si les IFRAME sont supportées par FireFox (puisque c'est le second navigateur le plus populaire, je me dois de ne pas l'ignorer), je pense que je vais m'orienter vers cette solution.

Tu as raison, le masquage des SELECT n'est pas forcément la solution la plus facile. Et surtout la plus rapide en terme de développement. Il faudrait conserver un tableau de tous ces SELECT, ainsi que leur état initial, etc. C'est réalisable, mais vu que le temps m'est compté, je vais probablement m'orienté vers la solution des IFRAME, en espérant qu'il n'y ait pas trop de problème de compatibilité.

Encore merci pour tes informations,
A bientot.

Cordialement,
Cedric.
0
Rejoignez-nous