从javascript包含javascript库的标准方法

Pau*_*jan 5 javascript ajax jquery yui

我想从我的javscript include中获取jquery库.

这是否100%有效?有没有更好的办法?

(function() {

var loadJquery = function (cb) {
    var addLibs = function () {
        if (typeof(document.body) == "undefined" || document.body === null) {
            setTimeout(addLibs, 100);
            return;
        }

        var node = document.createElement("script");
        node.src = "http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js";
        document.body.appendChild(node);
        checkLib();
    };

    var checkLib = function () {  
        if (typeof($) == "undefined" || $("*") === null) {
            setTimeout(checkLib, 100);
            return;
        }
        cb($.noConflict());
    }
    addLibs();
}

loadJquery(function($){
  // Do stuff with $
  $(document.body).css("background", "black");
});

})();
Run Code Online (Sandbox Code Playgroud)

更改node.src,并$.noConflictYUI如果你想YUI3,或者YAHOO如果你YUI2等.

Pau*_*jan 2

在我们工作的内部邮件列表上发帖时,我被指出了这一点:

动态注入脚本涉及许多跨浏览器边缘情况。如果无法将 YUI 3 种子文件滚动到您的脚本中,并且您不能依赖已加载 YUI 3 种子的属性,我建议使用 LazyLoad(无耻插件)来引导您的脚本:http ://github.com/rgrove/lazyload/

您可以将lazyload.js合并到您的脚本中,然后使用类似以下内容来加载YUI 3种子(如果页面上尚未存在):

(function () {
   function init() {
     YUI().use('node', function (Y) {
       // ... do my stuff ...
     });
   }

   if (YUI) {
     init();
   } else {
     LazyLoad.js('http://yui.yahooapis.com/3.0.0/build/yui/yui-min.js',
init);
   }
})();
Run Code Online (Sandbox Code Playgroud)