Javascript 在CDN失败时加载本地JS/CSS的HTML if语句

Javascript 在CDN失败时加载本地JS/CSS的HTML if语句,javascript,html,performance,web,Javascript,Html,Performance,Web,当从CDN或任何外部服务器加载CSS/JS文件时,由于外部故障可能(即使概率很低)丢失该文件。在这种情况下,html页面将因缺少适当的CSS和JS而损坏 是否有一种在CDN故障时加载本地版本的实用方法 <link rel="stylesheet" href="http://cdn.com/style.css" type="text/css" /> IF (not loaded style.css){ <link rel="stylesheet" href="/css/style

当从CDN或任何外部服务器加载CSS/JS文件时,由于外部故障可能(即使概率很低)丢失该文件。在这种情况下,html页面将因缺少适当的CSS和JS而损坏

是否有一种在CDN故障时加载本地版本的实用方法

<link rel="stylesheet" href="http://cdn.com/style.css" type="text/css" />
IF (not loaded style.css){
<link rel="stylesheet" href="/css/style.css" type="text/css" media="screen" />
}

IF(未加载style.css){
}
对于JS,这样做会更容易,因为我们可以测试JS函数(在JS文件中提供);然后,在失败时加载本地文件。例如,测试,如果jQuery库可用


然而,我很想知道是否有一个实用的方法

对于Javascript,您可以在构建动态脚本时侦听和事件。然而,在这些相同的页面中,它显示了CSS的其他特性

动态加载CSS的唯一可靠方法是通过AJAX实现。您可以通过动态链接标记加载样式,但如果没有这些事件,您将不知道它们是否已加载。你可以为这些风格进行投票,但在我看来,这是一种粗俗的风格

另一种方法是让服务器读取这些CDN文件。如果它们是好的,打印链接的URL。但如果这些链接失效,则让它打印本地URL。这将更加可靠,并将您的逻辑卸载到服务器。这假定您有权访问服务器


或者更好,首先使用本地版本!有了好的缓存,带宽就不会成为问题了

我会这样做

在样式表
ui-helper-hidden
中创建一个类,然后添加一个div作为页面上的第一个元素

<body><div class="ui-helper-hidden"></div><!-- rest of html --></body>

检查并确保已加载CDN javascript文件后,请使用这段代码注意,我正在使用jquery

<script>
    // CSS Fallback
    $(function () {
        if ($('.ui-helper-hidden:first').is(':visible') === true) {
            $('<link rel="stylesheet" type="text/css" href="/pathtocss/nameofstylesheet.css" />').appendTo('head');
        }
    });
</script>

//CSS回退
$(函数(){
如果($('.ui helper hidden:first')。是(':visible')==true){
$('')。附于('head');
}
});
这将检查应该隐藏的元素是否存在。如果它没有隐藏,那么您就知道您的css文件没有从CDN加载

我用这个方法来做实验