刚学习了下js的一些优化,比如使用裸协议从cdn加载js和css,以及加载不成功读取自己服务器资源的处理,我的代码如下:
1. 我摸索出modernizr.min.js的加载失败后处理没错吧?
2. 我摸索出amazeui.min.js的加载失败后处理没错吧?
3. ie8polyfill.js 加载失败后的处理怎么做?我发现源码中没有类似的对象?
4. css加载失败后的处理如何做啊?
请帮帮忙?谢谢大家了,我相信很多人也有这些问题,毕竟CDN也有down机的时候
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在您的代码中,您已经尝试为modernizr.min.js
和amazeui.min.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);
CSS 文件的加载失败处理稍微不同,因为 <link>
标签不支持 onerror
事件。一种常见的做法是使用 JavaScript 动态创建 <link>
标签,并监听其 onload
和 onerror
事件(注意:IE9+ 支持 onload
和 onerror
,对于更老的浏览器可能需要其他策略)。
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不可用时能够顺利加载。