如何检测外部JavaScript是否已加载?

时间:2013-04-08 09:41:20

标签: javascript

我们如何通过我的应用程序了解用户是否已阻止未在我的服务器上分配的任何外部javascript,即在我的网站上jquery正在从jquery.org加载,如果用户阻止该网站,那么我该如何向用户显示消息该用户允许来自jquery.org的脚本。

我发现stackoverflow.com网站上有这个东西,当我阻止stackoverflow显示我

  

“Stack Overflow需要来自其他域的外部JavaScript,   被阻止或无法加载。“

消息,所以我的问题是如何才能成功加载外部脚本?

提前致谢。

5 个答案:

答案 0 :(得分:2)

除了答案之外,<script>元素还包含onloadonerror个事件,以及许多其他元素。 Here's有关浏览器兼容性的信息,以及here's有关如何使其在旧IE中运行的问题。

答案 1 :(得分:0)

最简单的解决方案:在外部脚本之后放置一些代码,以测试它引入的符号(例如jQuery)是否存在。

<script src="url-to-jquery"></script>
<script>
    if (!window.jQuery) {
        alert('jQuery could not be loaded');
    }
</script>

但如果您有许多外部参考,那可能会变得乏味。在这种情况下,您可能希望构建一个资源加载器,例如https://github.com/cujojs/curl

答案 2 :(得分:0)

您可以检查外部资源中定义的typeof任何函数或变量。

如果某个网站需要jQuery并且该网站是从外部资源加载的,只需运行此检查:

if (typeof jQuery === "undefined"){
  console.log("jQuery is not defined");
}

在第一次使用jQuery之前进行检查。

答案 3 :(得分:0)

示例代码:

<script id="webfont-garamond-fallback" src="https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js" defer></script>
<script>
var webfont = document.querySelector('#webfont-garamond-fallback');
if (webfont !== null) {
  webfont.addEventListener('load', function () {
    WebFont.load({
      google: {
        families: ['EB Garamond:400,400italic']
      }
    });
  });
}
</script>

应在所有现代浏览器和> = IE8中工作

答案 4 :(得分:-1)

使用外部js执行某些操作。例如,让您的脚本向正文添加特定的类:

<body class="js-file-1-loaded js-file-2-loaded ...">

通过这种方式,您可以随时检查天气是否已加载。