Webページに3つのスクリプトをロードし、そのうちの2つがロードを完了したら、関数をトリガーしたいと思います。
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' }
);
理想的には次のことができるようにしたいと思いますが、ドキュメントによると、head.ready()に2つのスクリプトがロードされるのを待たせることはできないようです(スクリプトの構成を参照)。
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.
// ...
});
では、これをどのように解決すればよいですか?準備ができたメソッドをネストした場合、コードがトリガーされることを確認できますか、それともjqueryが分析の前にロードを完了した場合にのみトリガーされますか?
head.ready('jquery', function() {
// Code that requires jQuery.
// ...
head.ready('analytics', function() {
// Code that requires both jQuery and Google Analytics.
// ...
});
});
別の解決策は、このように、ロードステートメントを2つの部分に分割することです。しかし、スクリプトの非同期ロードから完全に恩恵を受けるのでしょうか、それともjqueryと分析の前にWebフォントのロードを完了するのでしょうか?
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.
// ...
});