您是否可以拥有脚本的备用源?

时间:2013-09-07 19:23:44

标签: javascript jquery html html5

是否可以在HTML5中使用javascript的替代来源?例如,我正在使用jQuery,并在本地使用它。但我允许包含alt属性,这样如果不起作用,谷歌的jQuery会加载吗?

如果有效,代码看起来像这样:<script src="enter your text here.js" alt="googlescode"></script>

3 个答案:

答案 0 :(得分:6)

如果是jQuery,您可能需要查看this article

段:

<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>

答案 1 :(得分:5)

是的,你可以做到。 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>

但它反过来使用它。如果无法加载谷歌的脚本,它将回退到您的本地脚本。

你应该首先加载CDN版本,因为它加载的速度比“本地”版本快。

答案 2 :(得分:2)

在实施这些问题时,我意识到所有以前的答案都存在一个常见问题,即Chrome会阻止他们使用慢速连接,因为document.write同步功能。 该问题在this post中进行了讨论。

解决方案通常是使用现代加载器,或预编译js代码。

但是,如果您的用例仍然需要此方法,则需要使用异步调用。一个说明性的例子是the way Google Analytics is loaded

基本上,上面的代码转换为:

    <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>