Pergunta

Eu tenho uma página em que preciso da API Swfobject, JQuery e Google Maps. Eu pensei que poderia usar os benefícios 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>

Mas agora eu li em algum lugar (http://encosia.com/2008/12/10/3--reasons-why-you-shaft-let-google-host-jquery-for-you/) que eu preciso usar

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

em vez de $ (document) .ready () .. isso é verdade?

Foi útil?

Solução

Existem duas maneiras de usar a API do Ajax Libraries.

Em primeiro lugar, você pode usar o Google para hospedar seu arquivo jQuery:

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

Em segundo lugar, você pode usá -lo para fazer cargas assíncronas de jQuery, que é a que você está se referindo. Se você fizer isso, o padrão é:

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

A razão pela qual você tem que usar google.setOnLoadCallback() é porque carregar o jQuery neste caso é assíncrono, então você precisa esperar que o jQuery seja carregado e o documento a estar pronto.

O motivo pelo qual você deve usar o jQuery dentro do retorno de chamada de carga é porque ele não pode ser carregado em nenhum outro lugar no momento em que você executa o JavaScript, levando a uma condição de corrida potencial e erros intermitentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top