На моем сайте есть функция jquery, которая извлекает данные с другого (защищенного) сервера сразу после загрузки страницы. Используя вызов jsonp, я загружаю эти данные после события готовности документа:
<script type="text/javascript">
$(document).ready(function () {
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) {
initPage(data);
});
});
</script>
Что мне не нравится в приведенном выше вызове, так это то, что jsonp действительно может быть запущен до события готовности документа, тем самым замедляя загрузку страницы. Поэтому, если я включаю jquery внутри страницы (т.е. не ссылаясь на тег script), то следующий код отлично работает, и страница загружается быстрее:
<script type="text/javascript">
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) {
$(document).ready(function () {
initPage(data);
});
});
</script>
Но включение jquery в каждую страницу - это издержки в 23 КБ, которых я бы хотел избежать. Как я могу проверить, был ли загружен jquery, и только исключительная функция initPage (), когда был загружен jquery?
Edit:
Чтобы быть более точным, мне нужно многократно проверять, загружен ли jquery, и затем вызывать событие. Таймер работа может быть решением ..
Решение:
Я создал preinit, который выполняет проверку jquery. Загрузка моей страницы не может быть быстрее :). Спасибо всем!
function preInit()
{
// wait until jquery is loeaded
if (!(typeof jQuery === 'function')) {
window.setTimeout(function () {
//console.log(count++);
preInit();
}, 10); // Try again every 10 ms..
return;
}
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?',
function (data) {
$(document).ready(function () {
initPage(data);
});
});
}