在我的网站上,我有一个 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 是我想避免的 23k 开销。如何测试以查看是否已加载 jquery,并且仅在加载 jquery 时执行 initPage() 函数?
编辑:更准确地说,我需要反复检查 jquery 是否已加载,然后执行事件。计时器作业可能是解决方案..
解决方案:我创建了一个执行 jquery 检查的 preinit。我的页面加载速度再快不过了:)。感谢大家!
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);
});
});
}