2009-12-06 5 views
1

Dans FireFox Je cette jQuery à la fin du corps:javascript document prêt firefox (jQuery)

$(document).ready(function() { 
    $.getScript('LiveMapsJavascriptProvider.aspx?type=reference&value=6', init); 
}); 

Il y a beaucoup de fichiers js dans la tête qui sont nécessaires pour être tous chargés avant cela travail. J'ai donc mis mon appel dans un événement document.ready. Ça ne marche pas. IE fonctionne bien.

Si je mets une alerte (''); Avant d'appeler $ .getScript, cela fonctionne.

Cela ressemble à un problème avec les scripts qui ne sont pas encore chargés?

Je pensais que Document.ready était déclenché une fois que tous les scripts étaient chargés et prêts à fonctionner.

Merci, ian

+0

Utilisez l'onglet "réseau" de Firebug pour voir si le fichier aspx est chargé. –

Répondre

3

Vous n'avez pas nécessairement besoin d'utiliser jQuery pour cela.

ont simplement une fonction onload comme ci-dessous:

<body onload="JavascriptFunctionName"> 

Ou vous pouvez dynamiquement joindre votre appel de fonction à l'événement onload comme indiqué ci-dessous:

function addEvent(obj, evType, fn){ 
if (obj.addEventListener){ 
    obj.addEventListener(evType, fn, false); 
    return true; 
} else if (obj.attachEvent){ 
    var r = obj.attachEvent("on"+evType, fn); 
    return r; 
} else { 
    return false; 
} 
} 
addEvent(window, 'load', JavascriptFunctionName); 

Vous pouvez intégrer des fonctions jQuery appels à l'intérieur du JavascriptFunctionName fonction.

EDIT:

jQuery est également capable de le faire par le code suivant. Je recommande d'essayer cela en premier, pour éviter le code redondant inutile.

$(window).load(function() { 
    JavascriptFunctionName(); 
}); 
+0

Parce que c'est ce que je pourrais fournir pour aider OP. Si vous trouvez un bug dans l'implémentation de la fonction addEvent, faites le moi savoir. Upvotes/Downvotes devraient se rapporter à la façon dont la réponse était utile, et je crois que c'était. Vous êtes libre d'aller de l'avant et de poster une meilleure réponse. –

+0

OP utilise évidemment jQuery pour '$ .getScript'. Pourquoi dans les cripes recommanderiez-vous de rouler une autre implémentation de 'addEvent' à moitié cuite quand jQuery a tout ceci enveloppé avec' $ (window) .load (init) '? La liaison de l'événement n'est que la pointe de l'iceberg x-browser-event-ugly-iceberg: http://stackoverflow.com/questions/1796141/properly-bind-javascript-events/1796729#1796729 –

+0

Ce n'est pas à moitié cuit, fonctionne parfaitement et c'est là où il gagne sa valeur. Néanmoins, je comprends la notion de code redondant inutile, j'ai donc modifié ma réponse. Merci. –

9

document.ready est tiré après que le DOM est chargé. Vous pouvez essayer ceci:

$(window).load(function() { 
    // will execute once all scripts and images are finished loading 
}); 
+0

Pensez que vous vouliez dire '.load'. –

+0

@Crescent, oui je voulais dire «charger». Merci pour la remarque. –

0

Vous pouvez essayer d'utiliser quelque chose comme head.js pour indiquer l'ordre d'exécution, tout en profitant du chargement parallèle.

Questions connexes