javascript - $.ready() 在关闭主体之前

标签 javascript jquery performance delay domready

这不是真正的编码问题,更像是真实世界的陈述。

我之前有 noted DOMReady 事件很慢,非常慢。因此,我在浏览 jQuery 源代码时注意到可以使用 $.ready() 触发 jQuery domeready 事件。然后我想,在关闭正文之前放置这个简单的执行脚本应该会触发所有先前附加的“onDomReady”监听器。是的,它按预期工作:

     <script>$.ready()</script>
</body>

这里有两个例子,这个例子测量等待 DOMReady 时花费的毫秒数:

http://jsbin.com/aqifon/10

如您所见,DOMReady 触发器本身就非常慢,用户必须等待整整 200-300 毫秒才能启动 domready 脚本。

无论如何,如果我们在关闭 BODY 标签之前放置 $.ready(),我们会得到:

http://jsbin.com/aqifon/16

看出区别了吗?通过手动触发domready,我们可以切断100-300ms的执行延迟。这是一件大事,因为我们可以依靠 jQuery 在我们看到 DOM 操作之前处理它们。

现在,有一个问题,我以前从未见过有人推荐或讨论过这个问题,但它似乎仍然是一个主要的性能问题。一切都是为了优化代码本身,这当然是好事,但如果延迟执行时间太长以至于用户看到“unjQueryedContent 闪现”,那也是白费力气。

为什么没有更频繁地讨论/推荐这个?

最佳答案

通过自己触发事件,您是在向 ready() 处理程序声明您的 dom 已加载,但它可能尚未加载! DOM 就绪事件没有捷径可走。如果确实有很长的等待时间,那么请使用 firebug、chrome 等令人惊叹的调试工具……检查您的资源及其时间问题。这一切都是黑白分明的,并且会指出什么花费了这么长时间(请求、渲染、多少资源等。)

关于javascript - $.ready() 在关闭主体之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12850622/

相关文章:

javascript - 在 Underscore.js 中使用 JavaScript-Iterables

javascript - 使用 JS 或 AJAX 通过页面上的 JSON 对象进行实时搜索过滤器 (laravel)

jquery - Internet Explorer、闭包编译器和尾随逗号

c++ - 如何提高 DrawDIB 的质量?

javascript - 无法在 Promise ExpressJS 中设置响应 cookie

javascript - 按下按钮时连续播放声音JavaScript

Java内存使用/线程池性能问题

mysql - 性能最佳的 MySQL 服务器配置?

javascript - 引导日期选择器 setDate 的日期数组

jquery - Bootstrap Modal 中的 Jcrop 裁剪错误坐标