测试是否加载了jquery而不使用文档就绪事件

在我的网站上,我有一个jquery函数,一旦页面加载就从另一个(安全的)服务器检索数据。 使用jsonp调用我当前在文档就绪事件后加载此数据:

 $(document).ready(function () { $.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) { initPage(data); }); });  

我对上述调用不喜欢的是,jsonp实际上可以在文档就绪事件之前被执行,从而减慢页面加载速度。 因此,如果我在页面中包含jquery(即不使用脚本标记引用),则以下代码工作正常并且页面加载速度更快:

  $.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) { $(document).ready(function () { initPage(data); }); });  

但是在每个页面中包含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); }); }); } 

我想你可以用

 if (jQuery) { ... } 

查看jQuery对象是否存在。

好的,更好的是:

 if (typeof jQuery !== 'undefined') { ... } 

要么

 if (typeof jQuery === 'function') { ... } 

编辑:

不要担心开销或是否加载了jQuery对象。 如果你只是使用常规的标记包含jQuery库,然后在没有$(document).ready情况下执行代码,如下所示:

  

它会工作。 $(document).ready部分只是为了确保在您尝试更改尚未加载的DOM元素之前已完全加载DOM。 jQuery库本身,包括Ajaxfunction,将立即存在。

现在,如果你的initPage(data)调用使用了DOM,我认为它可以,你可以检查一下,如下所示:

  

但是,我不认为在大多数情况下这是必要的。

只要您将包含jQuery的脚本标记放在运行您的函数的脚本标记之上,那么它应该可以正常工作。

将脚本包含在此而不是ready函数中可能会有所帮助:

 (function() { // Your code here })(); 

您可以添加加载完成function或网格完成function,如下所示,这将帮助您在jqgrid上执行某些操作

  height : '550', width : '787', loadComplete : function() {} gridComplete:function(){} 

嗨,我想你应该首先检查是jquery,你要使用的方法是否定义

if(typeof(jQuery)!=’undefined’&& typeof($。ajax)!=’undefined’){
//你的代码将来到这里
}

我不喜欢上面的调用,是jsonp实际上可以在文档就绪事件之前被激活

你确定吗?! 请注意您可能仍然有图像loading..etc
我想你需要使用:

 $(window).load(function() { $.getJSON(_secureHost + '/base/members/current.aspx?callback=?', function (data) { initPage(data); }); }); 

链接

我正在使用footable jquery插件。 这对我有用:

 if ( $.fn.footable) {...} 

jquery版本 – 1.9.1 footable版本 – 0.5