如何在CDN被阻止/不可用的情况下加载本地脚本文件作为回退?

2022-08-30 02:41:50

答案 1

要确认cdn脚本已加载,您可以检查此脚本定义的任何变量/函数是否存在,如果它未定义 - 则cdn失败,您需要加载本地脚本副本。

基于此原则的解决方案如下:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.5.1.min.js">\x3C/script>')</script>

(如果没有 window.jQuery 属性定义的 cdn 脚本未加载)。

您可以使用此方法生成自己的解决方案。例如,jquery工具提示插件创建函数,因此我们可以使用如下代码进行检查:$.tooltip()

<script>
    if (typeof $.tooltip === 'undefined') {
        document.write('<script src="js/libs/jquery.tooltip.min.js">\x3C/script>');
    }
</script>

答案 2

我会研究像yepnopejs这样的插件

yepnope([{
  load: 'http:/­/ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',
  complete: function () {
    if (!window.jQuery) {
      yepnope('local/jquery.min.js');
    }
  }
}]);

获取要检查的对象数组,在站点上查看文档