是否有可能在 HTML5 中有一个 javascript 的替代来源?例如,我正在使用 jQuery,并在本地拥有它。但是我允许包含一个alt
属性,这样如果这不起作用,谷歌的 jQuery 会加载吗?
如果它有效,代码将如下所示:<script src="enter your text here.js" alt="googlescode"></script>
是否有可能在 HTML5 中有一个 javascript 的替代来源?例如,我正在使用 jQuery,并在本地拥有它。但是我允许包含一个alt
属性,这样如果这不起作用,谷歌的 jQuery 会加载吗?
如果它有效,代码将如下所示:<script src="enter your text here.js" alt="googlescode"></script>
是的,你可以做到。HTML5 Boilerplate有一个很好的 jQuery 加载示例。
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.10.2.min.js"><\/script>')</script>
但它反过来使用它。如果无法加载来自 google 的脚本,它会退回到您的本地脚本。
无论如何,您应该首先尝试加载 CDN 版本,因为它比“本地”版本加载得更快。
如果是 jQuery,你可能想看看这篇文章。
片段:
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js"></script>
<script>
if (typeof jQuery == 'undefined') {
document.write(unescape("%3Cscript src='/js/jquery-2.0.0.min.js' type='text/javascript'%3E%3C/script%3E"));
}
</script>
在实现它们时,我意识到所有以前的答案都有一个共同的问题,即 Chrome 会以慢速连接阻止它们,因为document.write
它是一个同步功能。这篇文章讨论了这个问题。
解决方案通常是使用现代加载器,或预编译 js 代码。
但是,如果您的用例仍然需要这种方法,则需要使用异步调用。一个说明性示例是加载 Google Analytics 的方式。
基本上,上面的代码转换为:
<script>window.jQuery || (function(){
// Create the DOM node
a=document.createElement('script');
a.src="http://path-to-the-script.js";
a.async=1;
// Find a node, and insert the script before it
m=document.getElementsByTagName('script')[0];
m.parentNode.insertBefore(a,m);
})()</script>