包含两个不同调用脚本的原因是什么?

包含两个不同调用脚本的原因是什么?

问题描述:

我使用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文件这种方式的原因是什么?

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

+8

我不太确定你在问什么。你已经给出了你的问题的答案... – lonesomeday 2012-01-03 18:15:34

+0

如果你没有互联网连接 – 2012-01-03 18:29:01

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

<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> 

这将加载jQuery库的本地版本,如果谷歌托管的版本没有装载正确(无法访问,网站关闭等),因此检查window.jQuery。如果window.jQuery不是true那么它将执行document.write

是的,它检查是否加载jQuery,如果没有,然后从自己的服务器加载它。

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

+0

+1作为澄清'//'我不知道! – enam 2012-01-03 18:45:35

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

<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库被加载(从谷歌CDN),如果没有,那么获取的jQuery的本地副本。

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

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

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

如果问题是“这是什么线?:做|| window.jQuery文件撰写(‘</SCRIPT>’)”,那么答案是,我们使用的是(或多或少)三元语句来测试jQuery对象,如果未加载jQuery库,它将评估为“false”值,如果是,则此测试将触发该语句的后半部分,从而导致加载本地jQuery。

HTH。