我试图了解在 SO 上阅读有关它的其他主题,但我找不到明确的答案。
我还检查了https://api.jquery.com/ready/和https://api.jquery.com/load-event/
当然,它并不总是发生。
加载前准备好(无内容)
准备好后加载(带图像)-但仅在您第一次访问该笔时,当您刷新它时(或者您有良好的互联网连接并且您在 1ms 内下载 1MB ;))-加载事件将在准备好之前触发,因为您已经有了该图像在浏览器缓存中。
我知道如何部分“解决”这个问题,但我更感兴趣的是它为什么会发生。
var windowLoaded = false;
$(function() {
console.log('Ready'); // Good - it will always fire **before** load event
});
$(window).on('load', function() {
windowLoaded = true;
});
$(function() {
if(windowLoaded) { // (1)
console.log('Loaded');
} else {
$(window).on('load', function() {
console.log('Loaded');
});
}
});
$(function() {
console.log('Ready'); // Bad - it will sometimes fire **after** load event - when `windowLoaded` is true in if statement (1)
});
但是这个“修复”并不是万无一失的——见代码注释