开发者社区 问答 正文

关于amazeui的js和css加载CDN失败的处理:报错

刚学习了下js的一些优化,比如使用裸协议从cdn加载js和css,以及加载不成功读取自己服务器资源的处理,我的代码如下:
















AmazeUI官网中是不包含上面内容的,我有如下问题:


1. 我摸索出modernizr.min.js的加载失败后处理没错吧?


2. 我摸索出amazeui.min.js的加载失败后处理没错吧?


3. ie8polyfill.js 加载失败后的处理怎么做?我发现源码中没有类似的对象?


4. css加载失败后的处理如何做啊?


请帮帮忙?谢谢大家了,我相信很多人也有这些问题,毕竟CDN也有down机的时候

展开
收起
kun坤 2020-06-07 21:11:16 1011 分享 版权
阿里云 AI 助理回答

在您的代码中,您已经尝试为modernizr.min.jsamazeui.min.js实现了加载失败后的回退处理,这是正确的思路。对于其他资源的加载失败处理,可以参考以下方法:

3. ie8polyfill.js 加载失败后的处理

如果源码中没有提供特定的对象或方法来检测加载状态,您可以使用与前两个脚本类似的逻辑来处理。例如,通过监听onerror事件来实现回退。

var ie8polyfill = document.createElement('script');
ie8polyfill.src = 'https://cdn.amazeui.org/amazeui/2.7.2/js/ie8polyfill.min.js';
ie8polyfill.onerror = function() {
    // 如果CDN加载失败,从本地服务器加载
    this.src = '/path/to/your/local/ie8polyfill.min.js';
};
document.head.appendChild(ie8polyfill);

4. CSS 加载失败后的处理

CSS 文件的加载失败处理稍微不同,因为 <link> 标签不支持 onerror 事件。一种常见的做法是使用 JavaScript 动态创建 <link> 标签,并监听其 onloadonerror 事件(注意:IE9+ 支持 onloadonerror,对于更老的浏览器可能需要其他策略)。

function loadCSS(url, callback) {
    var link = document.createElement("link");
    link.type = "text/css";
    link.rel = "stylesheet";
    link.onload = function() {
        if (callback) callback();
    };
    link.onerror = function() {
        // 加载失败时,尝试从本地加载
        link.href = url.replace('cdn.', 'your-local-server.');
        if (callback) callback();
    };
    link.href = url;
    document.head.appendChild(link);
}

// 使用示例
loadCSS('//cdn.amazeui.org/amazeui/2.7.2/css/amazeui.min.css', function() {
    console.log('CSS loaded successfully or fallback applied.');
});

请注意,上述代码中的 'your-local-server.' 需要替换为您实际的本地服务器地址。此外,确保您的服务器已正确配置并托管了这些备份文件,以便在CDN不可用时能够顺利加载。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答