【问题标题】:Does $.ready fire before or after all inline <script>'s have been loaded?$.ready 是在加载所有内联 <script> 之前还是之后触发?
【发布时间】:2011-06-01 01:14:03
【问题描述】:

本质上,这是一个 javascript 问题,但我正在使用 jQuery 连接事件。

这是一个例子:

<html>
  <head>
    <script src="waiting_on_ready.js" />
  </head>
  <body>
    <script src="http://somewhere.com/not_cached.js"></script>
  </body>
</html>

waiting_on_ready.js 中的 $.ready 回调是否必须等待 not_cached.js 被加载?是否等待 not_cached.js 被执行?

【问题讨论】:

标签: javascript jquery events


【解决方案1】:

是的,是的。

在使用 HTML5 "async" attribute 时,&lt;script&gt; 元素的执行是同步的除了。 JavaScript 需要同步执行(除非另有要求不这样做),因为 JavaScript 可以通过document.write 等修改文档流(但实际获取资源可能是并行的)

编码愉快。

【讨论】:

  • 谢谢!是否有在加载外部脚本之前触发的事件,但在 DOM 准备好操作之后?或者根据定义,在 加载和/或执行之前 DOM 是否准备好?
  • @Aaron 在准备好之前它还没有准备好:) 脚本元素的执行会阻止 DOM 准备好(例如“防止
【解决方案2】:

当所有 DOM 元素都准备好进行操作时,Ready 会触发。

当浏览器遇到一个脚本元素时,DOM 解析会停止,直到脚本执行完毕,所以由于它的工作原理,它会在所有脚本加载后触发。

【讨论】:

  • 我不得不把它交给 pst,因为他是第一个得到正确回应的人。不过谢谢!投赞成票:)
  • 我的答案一开始是错误的,所以我会接受它。点赞总比没有好。 :)
【解决方案3】:

$(document).ready()not_cached.js 被加载和执行之前不会被触发(假设not_chached.js 中的执行是同步的)

【讨论】:

    【解决方案4】:

    $.ready 脚本在页面完全加载后执行,as the onload event does,但是如果找到内联脚本,则会执行它。

    【讨论】:

      猜你喜欢
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多