CDN библиотек Google AJAX для jQuery
-
24-09-2019 - |
Вопрос
У меня есть страница, на которой мне нужны 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, что приводит к потенциальному состоянию гонки и периодическим ошибкам.