asp.net - 检测所有 HTML 页面渲染何时发生

标签 asp.net javascript jquery dom xhtml

我正在处理一个非常复杂的 .aspx 页面,其中充满了控件(Telerik、Ajax 等),这些控件在加载页面时都会展开、折叠、显示、隐藏等。由于这种渲染发生在客户端,并且根据用户的机器规范可能需要不同的时间长度,因此有没有办法检测所有(或部分)渲染何时发生(jQuery?),以便我可以针对特定的情况采取行动元素,知道它们已完全渲染?

最佳答案

JavaScript 是单线程的。传递给 setTimeout 的时间是最小值,但不是最大值,因此,如果您传递类似 10(ms) 的时间,则实质上是在说“在所有当前运行的代码完成后执行此代码”。

因此,如果所有控件都使用 $(document).ready() 来完成其任务,那么您所需要的就是:

$(document).ready(function() {
    setTimeout(function() {
        doStuff();
    },10);
});

doStuff 将在传递给 $(document).ready 的所有函数运行后调用。然而,这并非万无一失。如果控件有自己的方法来检测文档是否已加载,或者执行自己的setTimeout(),那么您就有麻烦了。问题在于 JavaScript 不保证 setTimeout 的执行顺序。有时您的代码可能会最后运行,有时它可能会在用于动画的 setTimeout 之前运行。

最后一个想法:如果所有动画都是使用 jQuery 完成的,那么效果将在单个队列中运行。在 doStuff 中,您可以添加某种动画 with a callback并相当确定回调将最后运行。

关于asp.net - 检测所有 HTML 页面渲染何时发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2042692/

相关文章:

asp.net - Visual Studio 2015 - 在 Debug模式下打开两个项目

c# - 即时创建模型

javascript - 防止 Chrome 浏览器在 Asp.net 中存储的地址自动填充建议

javascript - react native clearInterval在android中不起作用

javascript - 在同步回调中​​使用 dust.js(异步)

asp.net - ASP.NET Web App的分布式缓存/ session 解决方案

javascript - document.getElementById ('mybox' ) 和 mybox 有什么区别?

javascript - 将 json 传递到 JavaScript 数组中

javascript - 偏移量不能将 div 返回到 0,0?

javascript - 在 Summernote 中创建自定义按钮插件