为什么jQuery试图加载我的脚本?

时间:2016-10-04 09:37:49

标签: javascript jquery html

我正在构建一个链接到网站的jQuery网页。 问题是,由于某些原因,jQuery正在尝试加载我的脚本。

这是我的代码:

 <!DOCTYPE html>
<html lang="nl">
<head>
  <meta charset="UTF-8">
  <title>Inloggen | Andalusier Vereniging</title>
  <link rel="stylesheet" href="../css/prefixes.css" media="screen">
  <link rel="stylesheet" href="../css/loginstyle.min.css" media="screen">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
  <!-- <script src="../js/assets/checks.js" charset="utf-8"></script> -->
  <script src="lksdfj" type="text/javascript"></script>

</head>

  <body>



  </body>
</html>

输出:enter image description here

现在没有jQuery脚本(已评论): enter image description here

修改 好吧,我刚刚意识到第二个CSS文件中的字体链接(@import)正在执行此操作。如果我删除它,它会停止执行两次。还有什么想法吗?

最终编辑: 谢谢大家帮我澄清这个问题。总结:有些浏览器倾向于重新检查是否找到了文件,但它绝不会执行两次文件。

那么......这里发生了什么,我应该担心这个吗?

非常感谢能给我一个好答案的人!

1 个答案:

答案 0 :(得分:1)

这不是2倍的文件加载(我的意思是jQuery不会尝试第二次运行该文件),它的错误是2次。

浏览器会打开与服务器的许多tcp连接,并拉出要呈现的页面所需的文件。因此浏览器知道文件在需要运行之前就丢失了。

这是我的观点。我们有2个现有文件,&#34; xm.html&#34;和&#34; exist.js&#34; (xm来自xmmmm:P) 和一个不存在的文件,我们称之为&#34; dont_exist.js&#34;。

所以&#34; xm.html&#34;代码是:

<!DOCTYPE html>
<html lang="nl">
    <head>
        <meta charset="UTF-8">
        <title>Test Html</title>

        <script type="text/javascript">console.log('Execute code 1');</script>

        <script src="exist.js" type="text/javascript"></script>

        <script type="text/javascript">console.log('Execute code 3');</script>

        <script src="dont_exist.js" type="text/javascript"></script>

        <script type="text/javascript">console.log('Execute code 5');</script>

    </head>
    <body>
    </body>
</html>

&#34; exists.js&#34;的代码是

console.log('Execute code 2');

所以我的chrome的输出是:

enter image description here

错误在于文件的js代码将被执行。

但是firefox有时输出这个:

enter image description here

所以第一个错误是找不到该文件的404错误,但是因为firefox试图在一段时间之后以正确的顺序运行该文件,所以打印了相同的消息以用于我想的调试方案。

修改 让我解释一下。 这取决于浏览器如何处理文件,

jQuery不在您的服务器上,因此浏览器需要2个或更多tcp连接来加载文件,通过tcp连接,浏览器可以顺序发出许多http请求。

因此,浏览器尝试通过预加载而不是运行它们来获取尽可能快的文件所需的文件。

当其他文件等待时,jQuery文件可能需要更多时间才能下载。

因此,当他无法找到文件时出现错误404,但是,如果它认为文件没有预加载,他可能会尝试再次加载它(如果tcp连接仍在运行则不会花费任何费用)。

浏览器在任何情况下都不会运行该文件2次。