1

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

当我阻止 stackoverflow 向我展示时,我发现这些东西在 stackoverflow.com 的网站上

“堆栈溢出需要来自另一个域的外部 JavaScript,它被阻止或无法加载。”

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

提前致谢。

4

5 回答 5

2

除了答案,<script>元素有onloadonerror事件,还有许多其他元素。这是 有关浏览器兼容性的信息,以及有关如何使其在旧 IE 中工作的问题。

于 2013-04-08T09:56:59.843 回答
0

Simplest solution: Put some code after the external script which tests whether the symbol it introduces (e.g. jQuery) exists.

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

But that could become tedious if you have many external references. In that case, you might want to build upon a resource loader, such as https://github.com/cujojs/curl.

于 2013-04-08T09:45:54.200 回答
0

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

如果站点需要jQuery并且它是从外部资源加载的,只需运行以下检查:

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

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

于 2013-04-08T09:48:53.163 回答
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

于 2019-03-15T08:19:31.867 回答
-1

Perform something with your external js. For example let your scripts add a specific class to the body:

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

With that you can always check weather something has been loaded or not.

于 2013-04-08T09:46:04.317 回答