Вопрос

У меня есть страница, на которой мне нужны SWFObject, jQuery и API Карт Google.Я подумал, что смогу воспользоваться преимуществами использования:

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

Но сейчас я где-то прочитал(http://encosia.com/2008/12/10/3-reasons-why-you-should-let-google-host-jquery-for-you/) что мне нужно использовать

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

вместо $(document).ready()..Это правда?

Это было полезно?

Решение

Существует два способа использования API библиотек Ajax.

Во-первых, вы можете просто использовать Google для размещения вашего файла jQuery:

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

Во-вторых, вы можете использовать его для асинхронной загрузки jQuery, о чем вы имеете в виду.Если вы сделаете это, шаблон будет следующим:

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

Причина, по которой вы должны использовать google.setOnLoadCallback() потому что загрузка jQuery в этом случае является асинхронной, поэтому вам нужно дождаться загрузки jQuery. и документ должен быть готов.

Причина, по которой вам необходимо использовать jQuery внутри обратного вызова загрузки, заключается в том, что он не может быть загружен где-либо еще во время запуска Javascript, что приводит к потенциальному состоянию гонки и периодическим ошибкам.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top