【问题标题】:What's the reason to include scripts with two different calls?包含两个不同调用的脚本的原因是什么?
【发布时间】:2016-04-28 07:36:48
【问题描述】:

我使用 HTML5 样板,jQuery 在 HTML 页面中声明了两次,如下所示:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>

以这种方式包含 JavaScript 文件的原因是什么?

如果无法从 Google CDN 访问,似乎唯一的原因是从本地服务器加载 jQuery 库。

【问题讨论】:

  • 我不太确定你在问什么。你已经在你的问题中给出了答案......
  • 如果您没有互联网连接,则可以使用

标签: javascript jquery html


【解决方案1】:

他们之所以 html5 Boilerplate 以这种方式包含脚本是因为它尝试“如果无法从 Google CDN 访问,则从本地服务器加载 jQuery 库。” =)

【讨论】:

    【解决方案2】:
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
    

    这将尝试加载 jQuery 库的无协议版本

    <script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>
    

    如果 google 托管的版本未正确加载(无法访问、站点已关闭等),这将加载本地版本的 jQuery 库,因此会检查 window.jQuery。如果window.jQuery 不是true 那么它将执行document.write

    【讨论】:

      【解决方案3】:

      从 Google CDN 加载 jQuery 比从本地服务器加载要快得多,并且它可以被缓存,因此用户可能已经从另一个网站获得了它的缓存副本。

      检查是否已加载,否则如果失败,则从本地服务器加载。

      【讨论】:

        【解决方案4】:

        是的,它正在检查是否加载了 jQuery,如果没有,则从自己的服务器加载它。

        // 仅用于使其兼容 HTTP 和 HTTPS。

        【讨论】:

          【解决方案5】:

          原因是故障回复。第一行代码

          <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
          

          如您所说,从 Google CDN 拉取 jQuery 库。然后是下一行:

          <script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>
          

          将验证 jQuery 库是否已加载(来自 Google CDN),如果没有,则检索 jQuery 的本地副本。

          【讨论】:

            【解决方案6】:

            如果您的问题是“为什么没有指定传输协议?”,那么答案是“不必指定”。这使您可以使用相同的脚本引用,无论连接是否使用安全套接字,而不会让您的用户收到有关加密/未加密内容的警告。

            如果问题是“这条线在做什么?:window.jQuery || document.write('')”,那么答案是我们使用的是 (或多或少)测试jQuery对象的三元语句,如果没有加载jQuery库,它将评估为“false”值,如果是这样,这个测试将触发语句的后半部分,导致本地jQuery被已加载。

            HTH。

            【讨论】:

              猜你喜欢
              • 2014-05-01
              • 2016-07-30
              • 2016-11-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-12-09
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多