文件撰写回落造成的jQuery加载的顺序出([removed] fallback causing j

2019-09-22 05:58发布

我建设使用HTML5样板4.0一个新的网站,并正在运行与它的jQuery的本地后备代码的麻烦。 有问题的代码是在这里:

<!-- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> -->
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.8.1.min.js"><\/script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>

我在本地开发,现在,所以我注释掉CDN线。 我的问题是,jQuery也载荷,但它plugins.js和main.js后加载,导致不确定的错误。

我发现的最接近可能的解释是的#4点这个以前的回答 ,这表明这将是预期的,但是......上面是很容易的jQuery最常用的本地备用码,这是H5BP,这是重审核。 我必须失去了一些东西,是吗?

Answer 1:

我回答前一段时间类似的问题。

你可以这样做:

function loadScript(pathToScript, callback) {

    if (/jquery/.test(pathToScript) && window.jQuery) {
        //jQuery has already been loaded so simply call the callback
        callback.apply();

    } else {
        var head = document.getElementsByTagName("head")[0];
        var script = document.createElement("script");

        script.type = "text/javascript";
        script.src = pathToScript + "?t=" + new Date().getTime(); //prevent caching

        if (callback) {
            script.onload = callback;
        }

        head.appendChild(script);
    }
}

var scripts = ['js/vendor/jquery-1.8.1.min.js', 'js/plugins.js', 'js/main.js'];

(function (i) {
    if (i < scripts.length) {
        var self = arguments.callee;

        loadResource(scripts[i], function () {
            self(++i);
        });
    }
})(0);


Answer 2:

也没有找到有关这个问题在计算器上一个确切的答案,但是,似乎这个页面所涵盖的主题:

综上所述 - 创建一个真正强大的故障恢复解决方案并不简单。 我们需要考虑浏览器incompatabilities,文件状态和事件,相关性,延迟加载和超时! 值得庆幸的工具,如LABjs存在帮助我们让我们在我们的JavaScript文件的加载完全控制缓解疼痛。

  • http://happyworm.com/blog/2010/01/28/a-simple-and-robust-cdn-failover-for-jquery-14-in-one-line/

注:解决方案依赖于使用LABjs的



Answer 3:

您可以考虑使用yepnope与后备并行加载脚本。

从他们的网站:

yepnope.js要做的资源回退,仍然与第一并行下载相关脚本的能力。

和代码:

yepnope([{
  load: 'http:/­/ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',
  complete: function () {
    if (!window.jQuery) {
      yepnope('local/jquery.min.js');
    }
  }
}, {
  load: 'jquery.plugin.js',
  complete: function () {
    jQuery(function () {
      jQuery('div').plugin();
    });
  }
}]);

我希望这帮助!



文章来源: document.write fallback causing jQuery to load out of order