Javascript and jQuery Execution/Sequence

Javascript and jQuery Execution/Sequence

本文关键字:Sequence Execution jQuery and Javascript      更新时间:2023-09-26

关于Javascript/jQuery执行及其顺序的问题/澄清。

如果我似乎在这里回答了我自己的问题,请原谅我,但我觉得我在这个过程中错过了一个关键的东西。

我被告知我的选择器没有参加,因为 DOM 还没有准备好,这带来了这个问题。脚本最初是使用ready jQuery ready方法在头脑中。

谢谢大家。

问题:

  1. 无法访问 Drupal 模板文件。
  2. 只能加进头。
  3. 通过jQuery追加对于脚本标签不太有用。
  4. 我们的解决方案目前是链接到标记中的文件。
  5. 我真的在寻求澄清这里的过程。

上下文:

(对不起)...元素不是我的选择器的目标,来自头部的脚本。语法是正确的,因为它针对 HTML 标记没有问题。

我的理解是在 DOM 完全构建后触发的现成方法/结果侦听器。

我相信我已经知道的

  1. 我知道理想情况下,脚本应该放在标记中结束正文标签的正上方。

  2. 我知道当分词器遇到脚本标签时,它会停止所有内容并执行脚本(除非延迟/异步)。

  3. 我知道这就是为什么理想情况下它们应该放在关闭正文标签上方,以便 DOM 准备就绪。

  4. 我知道 jQuery ready 方法附加了一个侦听器,当浏览器在加载 DOM 后切换到就绪状态时,它会触发。

问题:

  1. 鉴于所有这些,放置在头部会使 ready 方法无用,因为它会因为分词器而立即执行?

  2. 这真的只是为了避免碰撞/覆盖多个窗口加载吗?(应该澄清一下。

鉴于所有这些,放置在头部会使 ready 方法无用,因为它会因为分词器而立即执行?

错。ready()方法仅在 DOM 完全加载时才被调用,ready()所做的只是建立一个等待 DOM 加载的侦听器,以便在 DOM 准备好作时执行 ready() 方法中的语句,换句话说,它将一个侦听器添加到 loaded 事件中,该侦听器仅在文档完全加载时被调用和执行。

这真的只是为了避免碰撞/覆盖多个负载吗?

"碰撞/覆盖"的真正含义是什么?你可以让多个侦听器在 JavaScript 中侦听相同的事件,它们不会相互覆盖或冲突。

从你的问题:

我知道 jQuery ready 方法会等到浏览器在加载 DOM 后切换到就绪状态。

嗯,有点。jQuery ready方法不会等待。它附加一个事件侦听器。函数已附加,但未执行。该函数仅在 DOM 准备就绪时执行;页面的其余部分将继续加载。

你真的在微优化的领域。是的,将script元素放在body的末尾是理想的,但它在现实中的影响很小,除非您有一个庞大、复杂且耗时的脚本。