在dom加载之后但在用户可以看到dom之前发生的就绪事件

Chr*_*ott 1 jquery

我在使用窗口或文档就绪函数时遇到的问题是,在某些浏览器中,用户可以看到在页面加载时发生的DOM操作.例如,如果我要删除窗口内的元素,用户可以先看到图像加载,然后删除.

我知道我可能会隐藏CSS中的所有内容,然后在我的代码执行后显示它,但这不是我正在寻找的解决方案.它并不总是有效.首先,因为JS是异步的,所以在所有其他dom操作完成之后,无法知道你的show函数将会触发.

基本上我想要的是一个函数,它就像文档/窗口一样工作,除了它在DOM可见之前发生.在dom加载之后但在它可见之前 - 那就是我想要进行操作的时候.

kly*_*lyd 5

没有任何事件可以满足您的需求.见第18.2.3节.

这被称为无格式内容Flash.谷歌搜索将向您展示更多技巧.你是对的.使用jQuery最常用的方法是简单地添加style="display: none"到body标签.然后,在您的ready事件结束时$(body).show().

评论中的@SarahBourt对高度计算提出了一个很好的观点.如果您可以支持现代浏览器,并且由于某种原因需要保持高度,那么您可能希望使用style="opacity: 0"style="opacity: 1"不是display隐藏/显示您的内容.

如果您需要确保首先完成所有操作.然后,您需要手动跟踪所有操作并show在您确定它们全部完成时触发.