jQuery、Bootstrap资源CDN失效本地回退:Bootstrap.js方案失效求助
Bootstrap JS CDN失效的本地回退方案
你之前的Bootstrap JS回退代码无效,核心原因是Bootstrap 5及以上版本已经不再依赖jQuery,所以用window.jQuery作为判断条件完全不成立——哪怕CDN的Bootstrap JS加载失败,只要jQuery本身加载成功,这个判断就会跳过回退逻辑,自然不会加载本地的Bootstrap JS。
正确的回退实现方案
我们需要检查Bootstrap自身的全局对象window.bootstrap是否存在,以此判断CDN是否加载成功:
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="" crossorigin=""></script> <script> if (typeof window.bootstrap === 'undefined') { document.write('<script src="frameworks/bootstrap.bundle.min.js"><\/script>'); } </script>
注意:
document.write里的</script>必须转义成<\/script>,否则会提前闭合外层的script标签,导致代码出错。
双重保障的优化方案
除了全局对象检查,还可以给script标签加上onerror事件,在CDN加载失败时直接触发回退,两种方式配合使用更可靠:
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.1/dist/js/bootstrap.bundle.min.js" integrity="" crossorigin="" onerror="this.onerror=null; document.write('<script src=\'frameworks/bootstrap.bundle.min.js\'><\/script>')"> </script>
内容的提问来源于stack exchange,提问作者Jawad
相关产品推荐
相关产品推荐

