我有一个网页,其大部分内容是在前端用 javascript 构建的。当基本的 HTML 被解析并构建了 DOM 树时,“ready”事件就会触发。在此事件中,将启动一个 javascript 代码,该代码将继续构建网页。
$().ready(function() {
$(document.body).html('<img src = "img.png" />');
$.ajax({
url: 'text.txt'
});
});
正如你在这个小例子中看到的,
- 新元素被添加到 DOM
- 更多的东西,比如正在加载图像
- 正在发送 ajax 请求
只有当所有这些都完成时,当浏览器的加载进度条第一次消失时,我才认为我的文档实际上已经准备好了。有没有合理的方法来处理这个事件?
请注意,这
$().ready(function() {
$(document.body).html('<img src = "img.png" />');
$.ajax({
url: 'text.txt'
});
alert('Document constructed!');
});
还不够,因为 HTTP 请求是异步的。也许将处理程序附加到每个请求,然后检查所有请求是否都已完成是做我想做的一种方法,但我正在寻找更优雅的东西。
附录: 我正在寻找的事件的更正式定义:
文档准备就绪且页面的动态内容首次完成加载/执行时的事件,除非用户通过鼠标移动、单击等触发另一个事件。