Document.ready vs document.onLoad

Je me demande quel est le bon pour exécuter le code js qui calcule la hauteur du menu vertical en fonction de la hauteur de la fenêtre et le met à l'heure, pas tard, pas tôt.

J'utilise document.ready mais cela ne m'a pas vraiment aidé, il ne se configure pas parfois, je dois recharger la page, mais ça marche, mais pas sur la première charge.

Comment résoudre ce problème?

Voici mon code:

 $(document).ready(function(){ var winh = document.body.clientHeight; var footer = document.getElementById('footer').offsetHeight; document.getElementById('sidebar').style.height = winh - 5/2*footer + 'px'; document.getElementById('sidebar').style.marginBottom = footer + 'px'; $(window).resize(function(){ var winh = document.body.clientHeight; var footer = document.getElementById('footer').offsetHeight; document.getElementById('sidebar').style.height = winh - 5/2*footer + 'px'; document.getElementById('sidebar').style.marginBottom = footer + 'px'; }); }); 

prêt

Lorsque vous exécutez le code lorsque le document est prêt, cela signifie que le DOM est chargé – mais pas comme des images. Si les images affectent la hauteur et l'largeur et que la balise d'image n'a pas de réglage de largeur et de hauteur, la liste n'est pas le choix pour vous, sinon c'est probablement.

en charge

Cela inclut les images – donc tout sera chargé. Cela signifie qu'il se déclenche un peu plus tard.

tous les deux

 var calculateSize = function () { var winh = document.body.clientHeight; var footer = document.getElementById('footer').offsetHeight; document.getElementById('sidebar').style.height = winh - 5/2*footer + 'px'; document.getElementById('sidebar').style.marginBottom = footer + 'px'; } $(document).ready(function(){ calculateSize(); $(window).resize(calculateSize); }); window.onload = calculateSize ;