如何测试某个 javascript 库是否已从 CDN 成功加载?

use*_*929 1 javascript fallback cdn

从 CDN 下载 javascript 文件时,我想提供本地后备。然而,对我来说,如何测试某个加载是否成功并不总是显而易见的。

对于一些流行的事情,这在其他 StackOverflow 问题中都有详细记录,例如,对于 Bootstrap ,if (window.jQuery)只需分别测试其三个部分。然而,对于其他库来说,这一点不太明显:if (window.Popper)if ($.fn.modal)

  • 对于 jQuery Validate,我发现了相互矛盾的信息:这个主题表明一个人可以做if (window.validator)这个一个表明一个人需要if(typeof $().validate == 'undefined')。它们之间有什么区别,为什么我需要其中一个而不是另一个?
  • 对于不太受欢迎的库,例如balanceText,我应该如何确定该库是否已成功加载?

一般的答案/方法将是完美的,但如果这不可行,我将不胜感激关于这两个库的答案。

Soc*_*Soc 5

如果您自己使用加载脚本,则可以使用元素onerror上的事件script来查看脚本是否已加载,而不是检查副作用。例子:

<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>
Run Code Online (Sandbox Code Playgroud)