2 つのオプション:
1 - window.load を待たない
ウィンドウの読み込みを待つのではなく、代わりに画像の読み込みを探すことができます。たとえば、HTML の画像の下で次のスクリプトを使用する (または jQuery のready
イベントを使用する):
(function() {
var imgs = $("selector for the images you care about");
var done = false;
// Hook both load and error events on the images
imgs.on("load error", check);
// We may well have missed some, so do a proactive check
check();
function check() {
var count = 0;
if (!done) {
imgs.each(function() {
if (this.complete) {
++count;
}
});
if (count === imgs.length) {
done = true;
imgs.off("load error");
// Do your effect
}
}
}
})();
load
イベントをフックする前にすでに発生している可能性があるため、イベントの取得に依存していないことに注意してください。load
そのため、すべての読み込みイベントを見逃した場合に備えて最初のチェックを行い、関連する画像が表示されたときに、またはerror
関連する画像から再度チェックします。
2 - 関連するスクリプトを非同期でロードする
マークアップでタグを使用するのではなく、要素を DOM に<script>
追加して、待ちたくないスクリプトを追加します。この方法で追加されたスクリプトは非同期に読み込まれ、イベントscript
を遅らせません。window.load
例えば:
(function() {
var scripts = [
"http://example.com/some/script.js",
"http://example.com/some/another_script.js",
"http://example.com/some/script3.js"
};
var index, script;
var parent = document.getElementsByTagName("script")[0].parentNode;
for (index = 0; index < scripts.length; ++index) {
script = document.createElement("script");
script.src = scripts[index];
parent.appendChild(script);
}
})();