0
我想在所有内容都可用且正确定位到网页中时显示内容。大多数预加载器技术只考虑下载时间,而不是渲染时间,因此让用户看到正在构建的页面。这很简短,但显而易见。我在本地应用程序中使用WebKit,但这不重要。一旦布局阶段完成,就会显示HTML内容
什么是正确的方法来延迟内容显示,直到页面完全准备好?
我想在所有内容都可用且正确定位到网页中时显示内容。大多数预加载器技术只考虑下载时间,而不是渲染时间,因此让用户看到正在构建的页面。这很简短,但显而易见。我在本地应用程序中使用WebKit,但这不重要。一旦布局阶段完成,就会显示HTML内容
什么是正确的方法来延迟内容显示,直到页面完全准备好?
正如上面提到的,你可以先款式应有尽有是visibility:hidden
<div id="content" style="visibility:hidden">
<!-- all your content
(won't be displayed, as long as they are not explicitly
visibility:visible) -->
</div>
的JavaScript来取消隐藏一切都非常简单:
function unhide() { document.getElementById("content").style.visibility = ""; }
要调用它,当一切是使用load
事件:
document.addEventListener('load', unhide, false);
我认为jQuery ready()
处理程序实际上在现代浏览器中侦听DOMContentLoaded
事件,所以它会在加载图像之前运行。如果您在显示所有内容之前只需要修改布局,则可以使用ready()
或DOMContentLoaded
,但一定要明确指定HTML中的图像尺寸。
使用可见性隐藏身体:隐藏,然后用js onready/load()取消隐藏。你可以把一种风格放在一个无脚本块内部以便服务于非js浏览器。 – dandavis
@dandavis,最好把你的解释更好的解决方案作为答案。 –
这就是我说的经典的预加载器技术:'$ .ready()'会在布局完成之前发生。我可以通过'setTimeout'实现我想要的,但我相信有更好的方法。 –