如何从CDN加载带有本地回退的javascript

时间:2012-07-20 17:05:50

标签: javascript external cdn fallback head.js

我想使用Head JS为我的网页动态加载所有其他脚本。我打算使用CDNJS托管的版本来利用更好的缓存,减少延迟等。

我没有理由认为CDNJS会去任何地方,但即使对于谷歌CDN托管的文件,如jQuery,我也希望包括一个后备。当我使用jQuery时,文件包含在<body>标记的末尾。由于Head JS的性质,我需要将其包含在我的页面的<head>中。

<body>中,我会使用两行:

<script src="http://cdnjs.cloudflare.com/ajax/libs/headjs/0.96/head.min.js"></script>
<script> window.head || document.write('<script src="js/libs/head-0.96.min.js"><\/script>') </script>

我可以在头部使用同一组线作为后备吗? document.write()不会覆盖整个页面吗?由于浏览器解析DOM的顺序,脚本在<head>中存在时是否加载不同?

我对此仍然很陌生,所以任何指导都会非常有用!谢谢!

1 个答案:

答案 0 :(得分:0)

正如您可能已经知道的那样,您将不会测试window.jQuery,但会在head.js中包含一些功能。

此外,您可能不想在此处使用document.write()两次。

代替document.write(),试试这个:

function appendScript(url) {
  var head = document.getElementsByTagName('head')[0];
  var theScript = document.createElement('script');
  theScript.type = 'text/javascript';
  theScript.src = url;
  theScript.onreadystatechange = callback;
  theScript.onload = callback;
  head.appendChild(theScript);
}

对于网址,请使用您当地的后备广告。

相关问题