从CDN下载javascript文件时,我想提供一个本地回退。然而,对于我来说,如何测试某个负载是否成功并不总是显而易见的。
对于一些流行的东西,这在其他StackOverflow问题中有很好的记录,例如,对于Bootstrap,一个只是分别测试if (window.jQuery)
,if (window.Popper)
,if ($.fn.modal)
的三个部分。然而,对于其他库,这就不那么明显了:
- 对于jQuery验证,我发现相互矛盾的信息:这个主题建议可以做
if (window.validator)
,这个建议需要if(typeof $().validate == 'undefined')
。它们之间的区别是什么,为什么我需要一个而不是另一个? - 对于不太流行的库,例如balanceText,我应该如何发现库是否加载成功?
一个通用的答案/方法将是完美的,但如果这是不可行的,我将非常感谢关于这两个库的答案。
如果您正在使用自己加载脚本,您可以在script
元素上使用onerror
事件来查看脚本是否加载,而不是检查副作用。例子:
<script>
function cdnLoaded() {
console.log('loaded');
}
function cdnError() {
console.log('not loaded');
// do error handling here
}
</script>
<script onload="cdnLoaded()" onerror="cdnError()" async src="https://unpkg.com/react@17.0.1/umd/react.production.min.js"></script>
<script onload="cdnLoaded()" onerror="cdnError()" async src="https://unpkg.com/nothing-here.js"></script>