11548 sujets

JavaScript, DOM et API Web HTML5

Salut,

La plupart des script javascript utilisent le gestionnaire d'évenement window.onload qui se déclenche à la fin du processus de chargement du document.
Quand on a une page assez lourde à charger, il faut donc attendre qu'elle soit entièrement chargée. Je pense à des scripts comme sIFR, où les titres apparaissent en dernier, on se retrouve donc avec une page sans titres pendant quelques secondes. Ou encore PVII Equal Height CSS Columns, où les colonnes sont adaptées à la fin du chargement.
Pour le DOM je suppose que c'est mieux d'attendre que la page soit chargée. Pourtant j'ai essayé en mettant un load sur un img avec la fonction à lancer, et la plupart de ces scripts se lancent directement, sans devoir attendre la fin du chargement.
Evidemment cette méthode n'est pas très propre (pas du tout même).

Est-ce que vous connaissez une méthode plus efficace que le window.onload ?
Bonjour,
Disons que rien ne t'interdit d'utiliser le DOM tant que l'élément auquel du fais référence est déclaré avant dans le code
exactement: tu dis "pas propre" mais onload est un événement tout à fait utilisable pour une image donc le principe n'est pas gênant (même si tu prends le risque d'une uri non trouvée, inaccessible, etc.);

après, c'est à toi d'adapter à ta page le(s) moment(s) où tu lances les diverses instructions;
ah oui, tiens, rigoureusement exact... sert tellement peut cette combinaison que je n'avais jamais vérifié;

si tu es assez pervers, contourne en plaçant l'instruction dans un <script />, le contenu ne sera pas parsé;

monimage.onload=function();


mais encore une fois, tout dépend de la lourdeur de contenu de ta page et j'admets qu'il n'y a pas de solution miracle; console-toi en te disant que les templates (côté serveur) sont encore moins performants;
Le problème de window.onload se rencontre surtout avec IE/win car par test, j'ai remarqué que le script entrait en action après le chargement complet de tous les fichiers composants la page (image, swf, html ...), alors qu'avec Netscape, Mozilla, Opéra, Firefox, il me semble actif dès la fin du chargement du fichier html.
Une parade est de mettre le script dans le body après l'élément qui pose problème. Ce n'est pas interdit en XHTML, je crois.