Pregunta

Tengo una página donde tengo que SWFObject, jQuery y Google Maps API. Pensé que podría utilizar las ventajas de usar:

<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>

Pero ahora he leído en alguna parte ( http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/ ) que necesito para uso

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

en lugar de $ (document) ready () .. ¿Es esto cierto?

¿Fue útil?

Solución

Hay dos formas de utilizar la API Ajax Libraries.

En primer lugar, sólo puede utilizar Google para alojar el archivo de jQuery:

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

En segundo lugar se puede usar para hacer asíncrono cargas de jQuery, que es lo que usted se refiere. Si lo hace el patrón es:

<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 razón por la que tiene que usar google.setOnLoadCallback() se debe a que la carga de jQuery en este caso es asíncrona por lo que es necesario esperar a que se cargue jQuery y el documento esté listo.

La razón por la que tiene que utilizar jQuery dentro de la devolución de llamada de carga se debe a que no se puede cargar en cualquier otro lugar en el momento de ejecutar el Javascript, lo que lleva a una condición de carrera potencial y errores intermitentes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top