Teste se o jquery está carregado não usando o evento ready do documento
No meu site, tenho uma função jquery que recupera dados de outro servidor (seguro) assim que a página é carregada. Utilizando uma chamada jsonp, atualmente carrego esses dados após o evento ready do documento:
<script type="text/javascript">
$(document).ready(function () {
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) {
initPage(data);
});
});
</script>
O que não gosto na chamada acima é que o jsonp pode realmente ser executado antes do evento de preparação do documento, diminuindo a velocidade do carregamento da página. Portanto, se eu incluir o jquery dentro da página (ou seja, não fazer referência à tag de script), o código a seguir funcionará bem e a página será carregada mais rapidamente:
<script type="text/javascript">
$.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) {
$(document).ready(function () {
initPage(data);
});
});
</script>
Mas incluir jquery em todas as páginas é uma sobrecarga de 23 mil que eu gostaria de evitar. Como posso testar para ver se o jquery foi carregado e apenas a função initPage () quando o jquery foi carregado?
Editar: Para ser mais preciso, preciso verificar repetidamente se o jquery está carregado e depois executar o evento. Um trabalho de timer pode ser a solução.
Solução: Criei um preinit que faz a verificação de jquery. O carregamento da minha página não pôde ser mais rápido :). Obrigado a todos!
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);
});
});
}