两种选择:
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);
}
})();