11548 sujets

JavaScript, DOM et API Web HTML5

Bonsoir,
comme bien d'autres, en tapant "menu déroulant" sur google j'ai atterri sur le famous Alsacréations. J'ai récupéré et essayé de comprendre le code javascript permettant de cacher les sous menus.
Tout va bien mais un problème subsiste tout de même: tant que la page n'est pas complètement chargée, les sous menus s'affichent.

j'ai placé la fonction montre ainsi que "window.onload=montre;" dans un fichier js appelé entre les balises <head>

Exemples de l'effet produit ici ou plus flagrant ici

Comment empecher les sous menus d'être apparents pendant le chargement de la page ?

C'était mon soucis du jour Smiley cligne
Merci !
Modifié par duclik (08 Nov 2006 - 18:50)
Administrateur
Bonjour et bienvenue,

en rapport avec Javascript mais pas trop avec ta question Smiley smile , le 2ème lien vu dans Firefox 1.5 sans Javascript (j'utilise l'extension NoScript) ressemble à ça (sur 3 pages):
upload/39-snap87.png
Tu peux te passer du script de détection et/ou d'une taille pareille nan? Smiley ravi
oui, je crois que c'est du flash appelé par un javascript dans une balise H1 avec une balise alt a l'interieur
du coup avec firefox, la balise alt se comporte comme un H1 --> grande taille et très moche Smiley smile
Bonjour,

Tu as la possibilité de placer un display:none; dans ta css.
Cela servira de style par défaut et devrais corriger ton problème Smiley murf
Salut,
ceci devrait résoudre ton problème

<script type="text/javascript">
document.write('<style type="text/css">#smenu1, #smenu2, #smenu3, #smenu4 {display:none;}</style>');

window.onload=montre;
function montre(id) {
etc...
</script>


<edit>
même réponse que cygnus donc mais seulement dans l'occurence js actif. Parce que sinon bonjour les dégats Smiley cligne
</edit>
Modifié par clb56 (08 Nov 2006 - 17:30)
Hello,
Cygnus a écrit :
Bonjour,

Tu as la possibilité de placer un display:none; dans ta css.
Cela servira de style par défaut et devrais corriger ton problème Smiley murf
Le problème de cette solution est que les utilisateurs pour qui Javascript n'est pas activé ne pourront jamais accéder au menu.

Une solution est d'utiliser l'évènement DOMContentLoaded qui se déclenche dès la fin de la création de l'arbre DOM (et donc avant la fin du chargement des images par exemple), mais qui est spécifique à Mozilla (bien que Opera l'ait visiblement implémenté dans les dernières versions), et l'attribut "defer" pour IE.

Pour plus d'informations, je te conseille cet article (qui est en anglais).
Merci pour votre réactivité !
Alors en effet le "display:none;" sur les dd empeche les sous menus de se montrer pendant le chargement.

Mais l'accessibilité n'est plus là puisque comme le souligne Eldebaran si le javascript est désactivé, les menus ne s'ouvrent plus (logique).

Je teste le javascript a clb56 qui devrait résoudre le probleme.

Merci Smiley smile

edit: c'est parfait: merci ! Smiley biggrin
Modifié par duclik (08 Nov 2006 - 17:38)