1

我试图了解在 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)
});

但是这个“修复”并不是万无一失的——见代码注释

4

0 回答 0