Здесь есть несколько вопросов. Во-первых, указанный вами метод асинхронной загрузки:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3.1');
google.setOnLoadCallback(function() {
// do stuff
});
</script>
есть пара вопросов. Теги скрипта приостанавливают загрузку страницы, пока они извлекаются (при необходимости). Теперь, если они медленно загружаются, это плохо, но jQuery маленький. Настоящая проблема описанного выше метода заключается в том, что, поскольку загрузка jquery.js происходит независимо для многих страниц, они завершат загрузку и визуализацию до загрузки jquery, поэтому любой стиль jquery, который вы сделаете, будет видимым изменением для пользователя .
Другой способ:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
Попробуйте несколько простых примеров, например, создайте простую таблицу и измените фон ячеек на желтый с помощью метода setOnLoadCallback () против $ (document) .ready () со статической загрузкой jquery.min.js. Второй метод не будет иметь заметного мерцания. Первая будет. Лично я думаю, что это не очень хороший пользовательский опыт.
В качестве примера запустите это:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.odd { background-color: yellow; }
</style>
</head>
<body>
<table>
<tr><th>One</th><th>Two</th></tr>
<tr><td>Three</td><td>Four</td></tr>
<tr><td>Five</td><td>Six</td></tr>
<tr><td>Seven</td><td>Nine</td></tr>
<tr><td>Nine</td><td>Ten</td></tr>
</table>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.3.1");
google.setOnLoadCallback(function() {
$(function() {
$("tr:odd").addClass("odd");
});
});
</script>
</body>
</html>
Вы (должны) увидеть появившуюся таблицу, а затем строки станут желтыми.
Вторая проблема с методом google.load () заключается в том, что он содержит только ограниченный диапазон файлов. Это проблема для jquery, так как она сильно зависит от плагина. Если вы попытаетесь включить плагин jquery с <script src="...">
тегом, и google.load()
плагин, вероятно, потерпит неудачу с сообщениями «jQuery не определен», потому что он еще не загружен. Я действительно не вижу способа обойти это.
Третья проблема (с любым методом) заключается в том, что они представляют собой одну внешнюю нагрузку. Предполагая, что у вас есть несколько плагинов и ваш собственный код Javascript, у вас есть минимум два внешних запроса для загрузки вашего Javascript. Возможно, вам лучше получить jquery, все соответствующие плагины и собственный код и поместить его в один минимизированный файл.
Из Ajax библиотек API Вы должны использовать Google для хостинга? :
Что касается времени загрузки, вы фактически загружаете два скрипта - скрипт jsapi и скрипт mootools (сжатая версия сверху). Так что это две связи, а не одна. Исходя из своего опыта, я обнаружил, что время загрузки фактически было в 2-3 раза медленнее, чем загрузка с моего личного общего сервера, даже если он исходил от Google, и моя версия сжатого файла была на пару К больше, чем у Google. Это даже после того, как файл был загружен и (предположительно) кэширован. Так что для меня, поскольку пропускная способность не имеет большого значения, не будет иметь значения.
Наконец, у вас есть потенциальная проблема, связанная с тем, что браузер-параноик помечает запрос как своего рода попытку XSS. Обычно это не проблема с настройками по умолчанию, но в корпоративных сетях, где пользователь может не иметь контроля над тем, какой браузер он использует, не говоря уже о настройках безопасности, у вас могут быть проблемы.
Так что, в конце концов, я не вижу, что я по крайней мере использую API Google AJAX для jQuery (более «полные» API - это отдельная история), за исключением публикации здесь примеров.
src
на более простой / безопасный / более быстрый синтаксис, который вы используете сейчас? Ваш ответ стал в основном каноническим, и оба изменения помогут людям быстро получить то, к чему они пришли.