【发布时间】:2011-12-13 10:33:55
【问题描述】:
以下是我文档中 <script> 标记中的第一行代码,就在我的文档中结束 body 标记的上方(它指定在 Google 的 CDN 失败的情况下运行本地提供的 jQuery 副本):
if(!window.jQuery){
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '/js/jquery.js';
var scriptHook = document.getElementsByTagName('script')[0];
scriptHook.parentNode.insertBefore(script, scriptHook);
}
jQuery(document).ready(function($){
// page behaviors
});
它确实执行成功,如果我的计算机没有连接到 Internet(这是一个本地服务的页面),则会插入 jQuery 的本地副本。但是,下面的document.ready() 部分不会执行。我猜这是因为它是在 jQuery 的后备副本生效之前调用的。以某种方式“延迟”其执行以使任一 jQuery 副本都能正常工作的正确做法是什么?
【问题讨论】:
-
答案是您使用
onload事件和readystatechange的组合。请参阅:ejeliot.com/blog/109。 -
查看那个问题,虽然解决方案可能相似,但问题却完全不同,恕我直言。
-
我们真的需要为谷歌失败的事件做计划吗?这就像为向上变成向下的可能性而设计......
-
@Sinetheta 一切都可能失败,包括 Google。虽然我不知道 AJAX API 的中断情况,但 Google 在其他服务上有很多中断。此外,您必须考虑网络中断的情况,即使远程服务器没有关闭,也无法访问。此外,对于开发来说,这很方便,可以在没有网络连接的情况下继续在火车或飞机上破解代码。
标签: javascript jquery cdn document-ready