有没有办法尝试加载HTML / JavaScript中的文件,如果没有加载则有后备?

时间:2009-03-10 18:33:48

标签: javascript html

我刚开始使用CDN为我的网站使用外部图像/静态文件,我想知道如何在CDN失败的情况下构建备份。有没有办法在HTML / JavaScript文件中引用外部链接,如果该文件在第一个外部主机中不可用,您可以指定该文件的回退位置?

3 个答案:

答案 0 :(得分:3)

这个第一个答案可能不适用于所有浏览器。你可以让一些/ remote / script.js设置一些变量“loaded = true”,然后在下一个脚本块中检查它。

<script>
loaded=false
</script>
<script src="some/remote/script.js"></script>
<script>
if(loaded==false){
  //do what you want here if it didn't load
}
</script>

答案 1 :(得分:1)

这里有一篇很好的文章:http://happyworm.com/blog/2010/01/28/a-simple-and-robust-cdn-failover-for-jquery-14-in-one-line/

在使用Microsoft Ajax CDN获取jquery的网站上,这对我来说非常方便。当我们在HTTPS页面上使用jquery时,我们有一些客户的机器不信任来自CDN的SSL证书。本地回退是解决该问题的好方法。

我们通过检查脚本本来会添加到全局命名空间的变量来确定是否注入回退。 e.g。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js">    </script>
<script type="text/javascript">
//<![CDATA[
if (typeof jQuery == 'undefined') {document.write(unescape("%3Cscript src='/Scripts/jquery.min.js' type='text/javascript' %3E%3C/script%3E"));}
//]]>
</script>

答案 2 :(得分:0)

已编辑:首次尝试错误

<script src="some/remote/script.js">
    // Set a flag in the above script
</script>
<script>
    if ( ! flag ) {
        // This code runs if script.js fails to load for some reason
    }
</script>

<object data="http://cdn/file.png" type="image/png">
    <!-- You can nest objects in here too -->
    <img src="http://local/file.png" alt="Fallback Image"/>
</object>

所以我想你可以使用脚本方法来处理所有事情;如果远程文件无法加载,请使用回退代码将所有路径更改为指向备份服务器。