2009-09-17 4 views
2

Je demande parce que j'exécute une application dans laquelle je charge un fichier script externe dans la section HEAD de la page, puis j'essaie d'appeler une fonction à partir de celui-ci dans la section onLoad de la balise BODY.L'ordre de chargement des fichiers javascript externes est-il différent dans IE8 par rapport à IE7?

external.js

function someFunction() 
{ 
    alert("Some message"); 
} 

myPage.html

<html> 
    <head> 
    <script type="text/javascript" language="javascript" src="external.js"></script> 
    </head> 
    <body onLoad="someFunction();"> 
    </body> 
</html> 

À l'aide des outils de développement dans IE8, je reçois une exception à la déclaration jeté onLoad parce que, apparemment, le fichier javascript externe hasn » t été encore chargé.

Je n'ai pas eu ce problème dans IE7 avant, donc ma question. Ont-ils changé l'ordre de chargement entre IE7 et IE8?

Si oui, y a-t-il une meilleure façon de faire cela? (Les références réelles de fonction de nombreuses autres fonctions et constantes, qui ont l'air beaucoup mieux dans un fichier externe)

Merci, BJ

Répondre

0

En supposant que ce que vous pensez qui se passe est ce qui se passe, vous devriez essayer de fixer le body.onLoad plus tard.

Pour simplifier les choses, vous pouvez le faire avec Prototype (y compris prototype, bien sûr) avec

Event.observe(window, 'load', function() { myFunction.init() }); 

ou JQuery (y compris JQuery) avec

$(document).ready(function(){ 
    // Your code here... 
}); 

Je pense qu'il est un pur Javascript façon de le faire, mais le problème est que l'élément de corps n'existera pas encore, donc c'est rugueux ...

Cela dit, je n'ai eu aucun problème en cours d'exécution du corps onload en Javascript avec IE8, un nd le mettre directement dans l'étiquette du corps, en utilisant des fichiers externes. Je vais tester cela maintenant par curiosité, et je rapporterai.

Éditer: Il n'y a aucun problème à faire l'onload à partir d'un fichier externe. Cependant, pendant que nous y sommes, vous voudrez peut-être apprendre à connaître JQuery, Prototype ou Scriptaculous :)

1

Je doute beaucoup que son a changé il casserait un nombre considérable de sites Web.

Essayez cette (sans utiliser les outils de développement): -

<body onload="alert(somefunction)"> 

cela ne devrait pas casser et vous dire si au point onload exécute si l'identifiant somefunction peut être vu.

2

Eh bien, je me sens vraiment stupide.

Il s'avère que le problème n'était pas lié à l'ordre de chargement. Le problème était que le fichier javascript externe avait une erreur de syntaxe dans l'une de ses fonctions, et apparemment, lorsque l'exception a été levée, il a complètement invalidé le fichier entier, rendant ainsi le reste des fonctions indisponible à la page principale.

Je ne suis pas sûr si ce comportement est différent dans IE8 par rapport à IE7, mais de toute façon, c'était le vrai problème.

Merci pour votre réponse.

B.J.

+1

B.J. Peut-être vous ne voyez pas le problème parce que quand votre IE8 est bien installé, il aurait peut-être modifié votre IE Options (à savoir Internet Options-> Avancé) et retiré votre chèque pour vous informer de toutes les erreurs JavaScript – nickytonline

Questions connexes