11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour Smiley smile ,

j'utilise un des menus déroulant alsacreations qui est le suivant menu
Il fonctionne parfaitement mais je souhaiterai supprimer l'apparition du menu au chargement de la page.
est-il possible de le faire? et comment?

Je suppose qu'il faut modifier le script:


<script type="text/javascript">
<!--
window.onload=montre;
function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>

Modifié par Sclormu (16 Dec 2007 - 13:43)
Salut Sclormu,

Je suis débutante mais je vais essayer de répondre.

Si tu ne veux pas voir l'entièreté du menu au chargement, ajoute dans le css :

#menu {display:none;}


Si tu ne veux pas voir les sous-menus qui s'affichent et disparaissent aussitôt au chargement de la page, dans le css :

#smenu1, #smenu2, #smenu3, #smenu4 {display:none;}


J'espère que je réponds à ta question.
Modifié par Foson (16 Dec 2007 - 20:06)
Bonjour,

Foson a écrit :
ajoute dans le css :

#menu {display:none;}


Non, car ceux qui n'ont pas javascript actif, n'auront pas accès aux sous-menus.
Une meilleure solution : http://forum.alsacreations.com/topic.php?fid=5&tid=31123&s=hasJS#p233480

Mais le mieux, avant d'utiliser ce type de menu, est que les liens soient accessibles au clavier et qu'au moins le sous-menu correspondant à la page en cours soit visible de tous Smiley cligne
Modifié par chmel (16 Dec 2007 - 21:05)
Salut,
Tu as un moyen trés simple d'éviter l'aparition du menu au chargement c'est de la cacher avant le chargement. En effet si tu appele le script comme ça :
<script type="text/javascript">
   <!--
      montre(id);
   //-->
</script>

dans ton html à la fin de ton menu ou de ta page, sans utiliser le window.onload=montre; (qui charge le script une fois la page chargée)
Bonjour Smiley biggrin ,

merci beaucoup pour toutes vos solutions, pour l'instant j'ai essayé la méthode de Foson et cela fonctionne...

Merci Foson, chmel, matmat...

A+
Sclormu a écrit :
pour l'instant j'ai essayé la méthode de Foson et cela fonctionne...
Salut Sclormu Smiley cligne ,

si je puis-je me permettre Smiley lol tu devrais relire la réponse de chmel car même si la méthode de Foson fonctionne il ne faut pas l'utiliser : si Javascript est désactivé le bloc est et restera inaccessible Smiley rolleyes ...

A+
Bonjour Heyoan,

je vais également tester les autres solutions... mais dommage de désactiver javascript (c'est un autre débat... Smiley cligne )

A+
Hello Smiley smile
Sclormu a écrit :
mais dommage de désactiver javascript (c'est un autre débat... Smiley cligne )

Un débat que l'on pourra faire quand tu te seras renseigné sur le sujet. Smiley cligne

Parler de "désactiver" JavaScript, c'est supposer que :

- JavaScript est une fonctionnalité présente par défaut, ce qui n'est pas le cas (j'entends par là que JavaScript est une couche au-dessus de HTML).
- Le fait de ne pas disposer de JavaScript est un choix, ce qui est là encore une erreur.
Modifié par Julien Royer (17 Dec 2007 - 15:48)
a écrit :
autant mettre tout le script en fin de page dans ce cas

Pourquoi pas effectivement, dans ce cas la ou il ne fait que quelques lignes, mais dans la pluspart des cas c'est quand mieux de le mettre dans un fichier externe pour qu'il se mette en cache pour les page suivantes
a écrit :
Oui, d'accord, mais où veux-tu en venir ? Cet article rejoint ce que je disais précédemment.


J'ai mis le lien de cette article pour ceux qui consulte le post ... Smiley cligne vu qu'on aborde le sujet
Modifié par Sclormu (17 Dec 2007 - 19:50)
matmat a écrit :
le mettre dans un fichier externe pour qu'il se mette en cache

Bien sur, mais comme ma réponse était déja hors sujet, je ne vais pas m'enfoncer plus.
Je vais juste apporter mon grain de sel au sujet du menu éxemple cité par Sclormu* qui fait apparaitre des sous-menu au survol de souris et seulement si javascript est actif. L'idéal est que ces sous-menus soient créés via javascript et absents du HTML.

* musclor ? faut être gentil alors Smiley cligne
Modifié par chmel (18 Dec 2007 - 23:49)
Julien Royer a écrit :
On s'en fout, on a Squelettor sur Alsacréations. Smiley ravi

De mémoire le gentil Musclor a quand même toujours mis une br... (euh...la patée) au méchant Squelettor Smiley biggol !
Heyoan a écrit :
De mémoire le gentil Musclor a quand même toujours mis une br... (euh...la patée) au méchant Squelettor Smiley biggol !

Chut. Smiley langue
Bonsoir,

Je ne comprends pas, j'ai essayé de mettre en oeuvre ta solution, matmat, mais c'est encore pire.

J'ai probablement dû effectuer une mauvaise manip.

J'ai laissé :
<script type="text/javascript">
<!--

function montre(id) {
var d = document.getElementById(id);
	for (var i = 1; i<=10; i++) {
		if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';}
	}
if (d) {d.style.display='block';}
}
//-->
</script>

dans le head, et j'ai ajouté un

<script type="text/javascript">

   <!--

      montre(id);

   //-->

</script>


avant le body.

Résultat, mes menus restent déroulés lorsque je charge la page.

Où ai-je mal agi ? Smiley sweatdrop
Bonsoir,
Je me permets de répondre à la place de matmat :
Dans le bout de script que tu ajoutes en fin de page, juste avant la balise
</body>
, tu doit remplacer "id" par l'id du sous-menu qui doit resté affiché, ou rien
montre()
si tous les sous-menus doivent être cachés Smiley cligne