2010-09-22 3 views
1

Je suis actuellement en utilisant un javascript avec la cette baliseComment réduire le délai de "Onload"?

<body onload="javascript:Mine();"> 

Maintenant, je remarqué qu'il prend un certain temps pour charger cette fonction après l'avoir ouvert le page.So est-il une autre manière que je peux réduire ce délai ?

Merci

+0

Le 'javascript: Mine() ; 'la syntaxe est incorrecte; préférable d'utiliser simplement 'Mine();'. 'javascript:' est un protocole URI que vous utiliseriez dans les liens (comme ''), pas dans les gestionnaires d'événements comme 'onload'. – Domenic

+0

Dans ce contexte, c'est un label (sans intérêt): https://developer.mozilla.org/fr/JavaScript/Reference/Statements/label – Quentin

Répondre

6

onload se déclenche lorsqu'une page est complètement chargée. Pour faire avancer les choses au feu plus tôt vous pouvez:

  • Faire la charge plus rapide des pages
    • Supprimer, réduire et optimiser les images (et d'autres contenus, publicités de tiers sont souvent un kicker majeur de performance)
    • Suivez les directives de performance (comme those from Yahoo!.)
  • Ne pas utiliser onload
    • utiliser une bibliothèque (tels que YUI ou jQuery) qui fournit un événement domready
    • Exécuter le script dans un <script> directement (au lieu de l'attribution d'un gestionnaire d'événements)
0

Réponse claire: Accélérez votre chargement de page. OnLoad signifie que cette fonction sera exécutée après le chargement complet de votre page.

+0

Downvote! Aie. Désolé, après l'avoir relu, ça semble condescendant. Je ne voulais pas dire. –

+0

Quelqu'un peut-il expliquer en termes plus simples? – 5416339

+0

David Dorward a fait un excellent travail, vérifiez sa réponse. –

4

OnLoad attend que toutes les images et autres ressources externes soient complètement chargées. Si vous voulez seulement savoir que tout l'arbre DOM avec tous les éléments HTML a été chargé, utilisez OnDOMReady. Notez que ce n'est pas une tâche triviale si vous voulez qu'il fonctionne bien sur de nombreux navigateurs. Si vous utilisez jQuery, ils ont résolu le problème pour vous, et vous pouvez écrire:

$(document).ready(function() { 
    Mine(); 
}); 

Mais sinon, le chargement jQuery seulement pour cette fonctionnalité pourrait ne pas améliorer votre chargement de la page du tout. Une autre solution, alors, serait de mettre l'appel juste avant </body>:

<body> 
    ... 
    <script type="text/javascript">Mine();</script> 
</body> 

La plupart de votre arbre DOM devrait être disponible pour vous à ce moment-là, de sorte que pourrait être un moyen d'aller.

+0

J'utilise très souvent l'approche JQuery. Si vous ne connaissez pas JQuery, cela en vaut vraiment la peine. – Luc

Questions connexes