Javascript 什么';将脚本包含在两个不同调用中的原因是什么?

Javascript 什么';将脚本包含在两个不同调用中的原因是什么?,javascript,jquery,html,Javascript,Jquery,Html,我使用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>')<

我使用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>

window.jQuery | | document.write(“”)
以这种方式包含JavaScript文件的原因是什么


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

他们之所以认为html5样板文件包含这样的脚本,是因为它试图“如果无法从谷歌CDN访问jQuery库,则从本地服务器加载jQuery库。”=)


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

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

如果谷歌托管的版本没有正确加载(无法访问,站点关闭等),这将加载jQuery库的本地版本,因此会出现
窗口。jQuery
检查。如果
window.jQuery
不是
true
,则它将执行
文档。写入

是,它将检查jQuery是否已加载,如果未加载,则从自己的服务器加载


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

原因是回切。第一行代码

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

如您所说,从GoogleCDN中提取jQuery库。下一行:

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

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

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

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

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

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


嗯。

我不太清楚你在问什么。您已经在问题中给出了答案…如果您没有internet连接,则该选项有效
<script>window.jQuery || document.write('<script src="js/libs/jquery-1.6.2.min.js"><\/script>')</script>