2013-10-09 44 views
0

我想在所有内容都可用且正确定位到网页中时显示内容。大多数预加载器技术只考虑下载时间,而不是渲染时间,因此让用户看到正在构建的页面。这很简短,但显而易见。我在本地应用程序中使用WebKit,但这不重要。一旦布局阶段完成,就会显示HTML内容

什么是正确的方法来延迟内容显示,直到页面完全准备好?

+1

使用可见性隐藏身体:隐藏,然后用js onready/load()取消隐藏。你可以把一种风格放在一个无脚本块内部以便服务于非js浏览器。 – dandavis

+0

@dandavis,最好把你的解释更好的解决方案作为答案。 –

+0

这就是我说的经典的预加载器技术:'$ .ready()'会在布局完成之前发生。我可以通过'setTimeout'实现我想要的,但我相信有更好的方法。 –

回答

2

正如上面提到的,你可以先款式应有尽有是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中的图像尺寸。

相关问题