Question

J'ai une page où j'ai besoin SWFObject, API jQuery et Google Maps. Je pensais que je pouvais utiliser les avantages de l'utilisation:

<script type="text/javascript" src="http://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script>
<script type="text/javascript">
    google.load("jquery", "1.4.1");
    google.load("swfobject", "2.2");
    google.load('maps', '2', {'callback': googleMapSetup });
</script>

Mais maintenant, je l'ai lu quelque part ( http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/ ) que je dois utiliser

google.setOnLoadCallback(function() {
    // Place init code here instead of $(document).ready()
});

au lieu de $ (document) .ready () .. Est-ce vrai?

Était-ce utile?

La solution

Il y a deux façons d'utiliser l'API Ajax bibliothèques.

Tout d'abord, vous pouvez simplement utiliser Google pour héberger votre fichier jQuery:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>

En second lieu, vous pouvez l'utiliser pour faire des charges de async jQuery, qui est ce que vous faites référence. Si vous faites cela le modèle est:

<script type="text/javascript" src="http://www.google.com/jsapi?key=INSERT-YOUR-KEY"></script>
<script type="text/javascript">
  google.load("jquery", "1.4.2");
  google.load("swfobject", "2.2");
  google.load('maps', '2', {'callback': googleMapSetup });
  google.setOnLoadCallback(function() {
    $(function() {
      // Place init code here instead of $(document).ready()
    });
  });
</script>

La raison pour laquelle vous devez utiliser google.setOnLoadCallback() est parce que le chargement de jQuery dans ce cas est asynchrone et vous devez attendre jQuery à charger et que le document soit prêt.

La raison pour laquelle vous devez utiliser jQuery dans le rappel de charge est parce qu'il ne peut pas être chargé nulle part ailleurs au moment où vous exécutez le Javascript, conduisant à une condition de course potentielle et des erreurs intermittentes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top