我有一个依赖于jQuery的JS脚本。
我想检查jQuery,如果没有加载/可用,请自行添加,等待加载,然后定义我的脚本类。
我目前使用的代码:
// load jQuery if not loaded yet
if (typeof (jQuery) == 'undefined') {
var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", 'http://code.jquery.com/jquery-1.4.4.min.js');
document.getElementsByTagName('body')[0].appendChild(fileref);
(ready = function() {
if ( typeof (jQuery) == 'undefined' || !jQuery) {
return setTimeout( ready, 1 );
} else {
// jQuery loaded and ready
jQuery.noConflict();
}
})();
}
// … class definition follows
var MView = function() …
现在,使用FireFox 4(我认为之前它确实有效,或执行速度太慢),即使我还想等待jQuery,它仍会继续执行脚本。递归的setTimeout是非阻塞的。
我该如何解决这个问题?使setTimeout阻塞?使用另一种方法?有没有更好的办法?一种方式?
该类应该是全局范围,因此可以在包含此脚本文件的页面上使用。
答案 0 :(得分:6)
我会推荐两件事。
if (!window.jQuery) {
var fileref = document.createElement('script');
fileref.setAttribute("type", "text/javascript");
fileref.setAttribute("src", 'http://code.jquery.com/jquery-1.4.4.min.js');
fileref.onload = function() {
// Callback code here
};
document.getElementsByTagName('body')[0].appendChild(fileref);
}