【发布时间】:2012-11-16 09:28:20
【问题描述】:
我在我的网页上加载了三个脚本,我想在其中两个完成加载后触发一个函数。
head.js(
{ webfont: 'http://ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js' },
{ jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' },
{ analytics: 'http://www.google-analytics.com/ga.js' }
);
理想情况下,我希望能够执行以下操作,但根据documentation(请参阅脚本组织),让 head.ready() 等待两个脚本加载似乎是不可能的。
head.ready('jquery', function() {
// Code that requires jQuery.
});
// This is not supported. :-(
head.ready('jquery', 'analytics', function() {
// Code that requires both jQuery and Google Analytics.
// ...
});
那么我应该如何解决这个问题?如果我嵌套了 ready 方法,我是否可以确定我的代码会被触发,还是只有在 jquery 在分析之前完成加载时才会触发?
head.ready('jquery', function() {
// Code that requires jQuery.
// ...
head.ready('analytics', function() {
// Code that requires both jQuery and Google Analytics.
// ...
});
});
另一种解决方案是将加载语句分成两部分,如下所示。但是我仍然会从脚本的异步加载中充分受益,还是会在 jquery 和分析之前完成加载 webfont?
head.js(
{ webfont: 'http://ajax.googleapis.com/ajax/libs/webfont/1.0.31/webfont.js' }
);
head.js(
{ jquery: 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js' },
{ analytics: 'http://www.google-analytics.com/ga.js' },
function() {
// Code that requires both jQuery and Google Analytics.
// ...
}
);
head.ready('jquery', function() {
// Code that requires jQuery.
// ...
});
【问题讨论】:
-
我不了解 HeadJS,但我希望这样的技术能够完美地处理嵌套调用。类似地,在 Java 中,多个进程上的
Process.join()被简单地称为一个接一个,因为即使进程完成的顺序与join()调用的顺序不同,先前完成的进程也会简单地导致join立即返回。我希望ready()调用已经加载的库来简单地立即(或在下一个滴答声)调用回调。 -
他们的文档和主页显示了几个等待多个脚本加载的清晰示例。你在看什么?
标签: javascript head.js