这不是一个真正的编码问题,更多的是一个现实世界的陈述。
我以前有过noted https://stackoverflow.com/questions/9557846/why-is-jquery-ready-recommended-when-its-so-slow that DOMReady
事件进展缓慢,非常缓慢。所以,我在浏览 jQuery 源代码时注意到,可以使用以下命令触发 jQuery domeready 事件$.ready()
。然后我想,在关闭主体之前放置这个简单的执行脚本应该会触发之前附加的所有“onDomReady”侦听器。是的,它按预期工作:
<script>$.ready()</script>
</body>
这里有两个例子,这个例子测量等待 DOMReady 时花费的毫秒数:
http://jsbin.com/aqifon/10 http://jsbin.com/aqifon/10
正如您所看到的,DOMReady 触发器本身就非常慢,用户必须等待 200-300 毫秒才能启动 domready 脚本。
无论如何,如果我们放置$.ready()
就在关闭之前BODY
标签我们得到这个:
http://jsbin.com/aqifon/16 http://jsbin.com/aqifon/16
看到不同?通过手动触发domready,我们可以砍掉100-300ms的执行延迟。这是一件大事,因为我们可以依靠 jQuery 在看到 DOM 操作之前就处理它们。
现在,对于一个问题,我以前从未见过有人推荐或讨论过这个问题,但它似乎仍然是一个主要的性能问题。一切都是为了优化代码本身,这当然是好的,但是如果执行延迟了很长时间以至于用户看到“闪烁的”unjQueryedContent”,那就是徒劳的。
有什么想法为什么没有更频繁地讨论/推荐这个问题吗?