2011-02-02 3 views
2

De la même manière que jQuery se charge une fois le document chargé, j'ai besoin d'un peu de jQuery après la fin du script JavaScript.Charger le script jQuery une fois le script JavaScript terminé

Je charge les données de contact de l'API Google Data et le div où les données apparaissent doit être complètement chargé (par le javascript) pour être accessible par le jQuery si j'ai raison.

Y at-il un moyen de le faire?

+0

après que javascript a fini de faire quoi? et qu'essayez-vous de faire exactement? – Victor

+0

Qu'entendez-vous exactement par "après la fin d'un script JavaScript"? Voulez-vous dire, après un appel de fonction JavaScript particulier est revenu? – Pointy

+0

Une chose qui m'embrouille, c'est que le terme «JavaScript» n'a pas forcément beaucoup de sens; c'est essentiellement le même que "un Python" ou "un PHP" ou "un Ruby". JavaScript est un langage de programmation, alors même s'il est facile d'imaginer ce que quelqu'un pourrait vouloir dire en utilisant le terme «JavaScript», il est difficile de savoir exactement ce qui est juste parce que le terme est essentiellement insignifiant. – Pointy

Répondre

5

Imaginons que vous attendiez le chargement de Google Analytics. Maintenant, vous savez que lorsque Google Analytics se charge, _gaq sera enregistré sur le DOM. Donc, sauf tous les autres (mieux) options asynchrones, vous pouvez créer une fonction qui attend l'existence de _gaq:

waitForGaq = function(fn, attemptsLeft) { 
    var tick = attemptsLeft || 30; 

    if (typeof(_gaq) != 'object' || !_gaq._getAsyncTracker) { 
     //_gaq isn't registered yet 
     if (tick > 1) { 
      //recurse 
      setTimeout(function() { 
       waitForGaq(fn, tick - 1); 
      }, 100) 
     } 
     else { 
      //no ticks left, log error 
      log('failed to load window.gaq'); 
     } 
    } 
    else { 
     //gaq is loaded, fire fn 
     fn(); 
    } 
} 

Ainsi, tout code doit courir après _gaq est enregistré, vous pouvez ajouter à la page thusly :

waitForGaq(function() { 
    //here's all my code... 
}); 

réitérer: récursion comme celui-ci est nécessaire que si le script que vous ajoutez n'offre pas une manière asynchrone d'interagir avec la bibliothèque. Google Analytics, pour un, est une sorte d'exemple sans objet car il offre une approche plus propre:

http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html

0

injecter une étiquette directement après l'original avec le code jQuery vous devez exécuter

<script src="foo" id="bar">

$("#bar").after(
    $("<script>").text("some code") 
); 
0

si je comprends bien, vous voulez faire quelque chose comme:

<script> 
// your javascript code 
</script> 
<script> 
//your jquery code 
</script> 
+1

Je pense qu'il parle d'attendre que les objets soient chargés sur le DOM de manière asynchrone? –

1

Essayez head.js

Il permet de définir exactement quand (après script spécifique ou après tous ont été chargé) vous voulez exécuter un morceau de code particulier. Sans compter que c'est par lui-même très soigné.

Questions connexes