11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,


Je suis actuellement en train de refaire mon site web, et j'approche de la fin ! Smiley smile Mais avant de rentrer dans l'arène d'Alsa où je demanderais les avis de la communauté sur ledit site (gasp! l'angoisse... ), je voulais vous soumettre un problème, que je n'arrive malheureusement pas à résoudre...

Dans un souci d'esthétique, j'ai donc voulu, dans le cas où mon contenu ne remplissait pas la fenêtre, forcer le positionnement du footer en bas de page. Voici le code :


$(document).ready(function(){
// Positionnement footer
	var winHeight = $(document).height();
	alert(winHeight);
	var pageHeight = $('#page').height();
	//alert (pageHeight);
	if(pageHeight < winHeight){
		$('section').css({
			marginBottom: (winHeight - pageHeight) + 'px'
		});
	}
});


Le code est apparemment bon (?), et pourtant si j'enlève le premier alert, le script ne fonctionne pas correctement. Assez étrange, et j'ai donc pensé à une histoire de timing, mais malgré mes tentatives (delay, setTimeout, ...) la seule solution que j'ai trouvée reste cet alert, car même le console.log ne fonctionne que de façon "aléatoire"...

Vous imaginez que pour le visiteur, un alert est assez rebutant ( Smiley langue ), et au vu de mes tests, je suppose que mon code ne doit pas être si correct que ça... J'en appelle donc aux experts, afin de trouver une solution à ce curieux problème !

Voilà, merci d'avance à celles/ceux qui pourront m'aider ; voici maintenant les liens vers les pages concernées :
http://www.soykje.com/testeur/
http://www.soykje.com/testeur/building-n3/
http://www.soykje.com/testeur/404
Bonjour, essaie avec
$(window).load(function() { }
au lieu de
$(document).ready(function(){}

Modifié par benj (20 Mar 2013 - 16:18)
OMG ! Eh ben on dirait bien que c'est résolu dis donc Smiley smile

Merci à toi benj, et au passage, histoire d'apprendre un peu... comment se fait-il que mon doc ready "me plante" là où le window load fonctionne impeccablement ? Je ne suis pas sûr de bien comprendre quel était ce problème qui vient de se résoudre, je crois...

En tous cas merci encore !
La fonction Load() n'attend pas le chargement du css, uniquement du html. Au contraire de la fonction ready() qui elle est appelé quand le dom est entièrement chargé.
Ok ! Je suis pas certain de bien percevoir toutes les subtilités entre ces deux fonctions, mais on va dire que l'essentiel est que la solution soit là Smiley smile

Merci encore à toi benj, et à bientôt sur le forum !