11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

je suis novice en réalisation de page web et je m'essaye aux script JavaScript.

Je redimensionne un bloc en fonction de la hauteur de la page ouverte.

Voici le code de mon fichier :


function Hauteur_corps()
{
	document.body.style.visibility = 'hidden';
	var Hauteur_min=450 ;
	var Hauteur_fenetre = document.body.scrollHeight;
	if (Hauteur_fenetre<Hauteur_min)
	{
		Hauteur_fenetre=Hauteur_min;
	}
document.getElementById('page').style.minHeight=(Hauteur_fenetre-(150+3+3))+'px';
	document.body.style.visibility = 'visible';
}

window.onresize=Hauteur_corps;


De plus, j'appelle la fonction dans ma page (juste au-dessus du </body> )


	<script language="Javascript" type="text/javascript">
		Hauteur_corps();
	</script>
</body>



et voici mes questions :

1 - pourquoi, pour que cela fonctionne, l'appel de la fonction s'effectue sans () dans le fichier JS et avec dans celui php ?

2 - J'ai voulu cacher le traitement lors d'un resize (présence des 'visibility')
mais ça n'a pas l'air de marcher ?

3 - le traitement est réalisé une fois lors du chargement de la page mais 2 fois lors d'un redimensionnement,resize, (visualiser par l'ajout d'un 'alert' au début de la fonction), pourquoi ? Y a-t-il un moyen d'éviter cette redondance.

Conscient des mes exigences, je vous remercie par avance.
J'ai réussi à supprimer l'appel de la fonction dans le fichier php en faisant dans le fichier JS un :
window.onload=Hauteur_corps;

Mais les 3 questions demeurent Smiley rolleyes
bonsoir ,
pour redimensionner un bloc selon la taille de la fenêtre , je te conseille d'utiliser le CSS ... Smiley cligne

sinon


...
(Hauteur_fenetre<Hauteur_min)
.....

As-tu bien echapper le script avec [CDATA[, vu que tu utilises un caractère qui sera 'parser' (<) s'il ne l'est pas !

il faut bien distinguer ta déclaration de fonction ( function untel(param..) { // instructions}, et sont exécution (lors de l'appel de celle-ci : untel(param..)

Dans la déclaration la fonction ne fait rien ; on indique les actions , instructions ,traitement qu'elle aura à effectuer quand on l'appelera .
Elle sera "lue" par le moteur javascript et "mise en mémoire" ;
Seul son appel lancera son exécution ...


De plus, j'appelle la fonction dans ma page (juste au-dessus du </body> )
 

le "mieux" est de mettre tes déclarations de fonction dans le header <head> ...<script ..> ton code , fonction </script> </head>
Le lancement de ta fonction dépend du moment où tu désires son exécution
si c'est au chargement de ta page

window.onload = tafonction;
 


... bon courage
Modérateur
Salut,

L-0sWald a écrit :
tu peux aussi mettre l'appel de fonction dans ton tag body

C'est déconseillé. Mieux vaut séparer le JS du du XHTML comme on peut le faire avec CSS... donc faire un fichier externe. Smiley cligne

Par ailleurs, si on est en XHTML, on écrit onload et non onLoad.

Enfin, pour le lancement de la page, un petit tour par ici ne serait pas superflu. Smiley ravi