2010-02-18 5 views
2

Je me suis récemment retrouvé à jouer avec des événements, et comme il n'y a pas de standard pour l'événement indiquant qu'une page a été chargée (comme onload ou pageshow), je me demandais si quelque chose contre la javascript page. Ce code serait alors exécuté lorsque la page est chargée.Solution de contournement indépendante du navigateur pour l'événement onload - logique?

Dans cet exemple, j'ajouterais un auditeur de keyUp à l'élément (entrée) identifiée par iText et l'affecter à la fonction UPDATETEXT (event) (l'objet de l'événement sera transmis à cette fonction).

<html><head></head><body> 
<!-- content --> 
<script type="text/javascript"> 
    document.getElementById('iText').onkeyup = updateText; 
</script> 
</body> 
</html> 

Exemple de page ici: http://kb.granjow.net/JavaScript/onload.html
Testés dans Firefox 3.5, Opera 10.10, IE 6, IE 8, travaillant partout.

Alors, est-ce bon ou ai-je raté quelque chose?

Dans l'attente de vos réponses. Simon

Répondre

2

Ce serait bien pour les pages de base. Cependant, si votre script traitait des images qui n'avaient pas encore été téléchargées ou résultaient de requêtes ajax, vous pourriez avoir des problèmes. Si vous handcoding les choses, quelque chose comme cela devrait fonctionner:

function registerEvent(el, event, func, bCapture) 
{ 
    if (el.attachEvent) 
     el.attachEvent('on'+event, func); 
    else if (el.addEventListener) 
     el.addEventListener(event, func, bCapture); 

} 

Dans le cas contraire, les différentes bibliothèques JS ont chacune leur propre mise en œuvre comme le .ready $ (document) jQuery().

+0

Je dois noter qu'en règle générale, vous devez placer autant de javascript en bas de la page pour améliorer les temps de rendu des pages. Voir la documentation YSlow de Yahoo pour plus de détails et des conseils plus pratiques (http://developer.yahoo.com/performance/rules.html#js_bottom). – chprpipr

+0

Merci beaucoup pour votre réponse! Lien intéressant, aussi. Je viens de lire une page de ppk sur l'attachement d'événements (pour être honnête, je me méfie de tous les navigateurs modernes qui supportent ce genre d'enregistrement d'événement). Il a dit qu'ils font, et son article a environ 2 ans :) http://www.quirksmode.org/js/events_advanced.html –

2

Cela semble bien. Il n'y a aucune raison de ne pas le faire de cette façon, tant que votre script est à la fin de la page. En fait, ASP.NET utilise cette méthode pour charger ses scripts.

+0

Merci, bon à savoir! Juste a dû éditer quelques pages d'ASP.NET aussi. –

Questions connexes