如何等待完整的页面加载(包括图像等)

How to wait for complete page load (including images etc.)

我想在加载页面时显示 "Please wait while the page is loading..." 消息。该页面包含许多小图像,需要一些时间才能加载。所以我不想在加载这些消息之前隐藏消息。

我尝试使用 dojo/domReady!dojo/ready,但它们在图像加载之前触发,因此当我此时隐藏消息时页面看起来仍然不完整。

以下代码有效,但似乎不是 dojo 方式:

window.onload = hideLoadingMessage();

使用 on 注册到 window.onload 根本不起作用:

require([ 'dojo/_base/window', 'dojo/on' ], function(win, on) {
  on(win, 'onload', hideLoadingMessage);
});

我应该如何等待页面完全加载(包括所有图片)?

如果要连接到 window load 事件,则不应使用 dojo/_base/window

而是使用普通的 window 对象。还使用 load 作为事件名称(而不是 onload)。 直接使用 window 对象避免加载你不需要的模块。

请参阅以下包含两种解决方案(window 对象和 dojo/_base/_window 模块)的代码片段:

require(['dojo/_base/window', 'dojo/on'], function(baseWin, on) {
  on(window, 'load', function() {
    alert('loaded - using global window object!');
  });
  
  on(baseWin.global, 'load', function() {
    alert('loaded - using dojo window module!');
  });
});
<script src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>