[英]How to know if an element has finished displaying on the screen (finished rendering) - Javascript
[英]javascript: “everything has finished drawing to the screen” event?
我是否可以挂入一个javascript事件,该事件将在所有内容绘制到浏览器屏幕后通知我? 具有适当CSS的图像,背景和DOM元素。
我正在设置一些“正在加载...”的div,这些div仅在页面完美且可以显示给用户时才消失。
我知道$(document).ready和onLoad,但这不是我的意思。
我正在使用angularJS,但是我认为这不重要。
谢谢!
如您所知,$ {document).ready仅等待HTML结构和Javascript加载触发。
您最好使用:
$(window).load(function(){
//do stuff here
});
等待页面中的所有内容加载(甚至图片)
尽管此解决方案不会触发任何事件,但它可以为您提供帮助。
像这样定义CSS:
#dvLoading
{
background:#000 url(images/loader.gif) no-repeat center center;
height: 100px;
width: 100px;
position: fixed;
z-index: 1000;
left: 50%;
top: 50%;
margin: -25px 0 0 -25px;
}
在上面使用
<div id="dvLoading"></div>
然后执行以下操作:
$(window).load(function(){
$('#dvLoading').fadeOut(2000);
});
演示: http : //jsfiddle.net/jquerybyexample/ssqtH/embedded/result/
资料来源: http : //www.jquerybyexample.net/2012/06/show-loading-image-while-page-is.html
因为您使用的是AngularJS,所以我可以假设您的图片和内容大部分是动态加载的,在这种情况下,您无法(轻松地)知道何时生成所有内容,因此您也不知道何时生成所有内容。图像将被加载,因为所有内容都将异步加载。
您可以做的是将小部件/应用程序/控制器的DOM占位符默认设置为类似加载的状态(也许是loading.gif?),当Angular生成内容时,它将替换它。 查看http://docs.angularjs.org/guide/animations ,了解如何在某些指令上实现动画。
然后,在这些小部件/应用/控制器中,您必须对其中的内容执行相同的操作...
因此,基本上,这是一个级联的“加载屏幕”,其中应用程序的每个级别都像喷泉一样加载。
$(document).ready或onLoad功能有什么问题?
$(window).load(function()
{
$(".loading").hide();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.