在加载所有脚本文件后,jQuery中的$()。ready()是否会触发?

时间:2014-01-16 09:54:12

标签: javascript jquery

我在不同的js文件中声明全局变量,然后在不同的文件中使用它们。在开始执行之前,我需要确保所有js都已加载。我也试图使用require.js转移到模块化js。但是现在我需要一个快速的解决方案。 在$().ready()下运行我的js代码是否安全?我想脚本标签会同步加载,因此在所有脚本加载之前DOM不会准备好。

$(window).load()保证所有脚本文件都已加载。

谢谢!

2 个答案:

答案 0 :(得分:3)

如果您内联加载脚本,那么在加载这些脚本之前DOM就不会就绪,因此在加载这些资源之前,$(。。ready()函数不会触发。如果您在脚本元素中使用async标记,那么在加载脚本资源之前,DOM可能会被归类为就绪,具体取决于脚本文件的大小。

然而,$()。ready()现在被jQuery定义为不推荐,所以请改用$(function(){})。

答案 1 :(得分:0)

$(window).on('load', function () {})将保证加载所有资源,而不仅仅是脚本。

但为什么你需要加载所有脚本? 脚本同步执行(没有延迟,异步和延迟加载技术),如果没有加载其中一个脚本,浏览器引擎将等待它,加载后它将继续执行。为了防止这种等待浏览器引擎是主要目标客户端优化之一。例如,您可以尝试将所有脚本添加到一个文件中。