关于Javascript / jQuery执行及其序列的问题/澄清。
如果我好像在这里回答我自己的问题,请原谅我,但我觉得我在这个过程中错过了一些关键词。
我被告知我的选择者没有参加,因为DOM没有准备好提出这个问题。脚本最初使用现成的jQuery ready方法。
谢谢大家。
问题:
- 无法访问Drupal模板文件。
- 只能添加头部。
- 使用jQuery添加对脚本标记来说并不太有用。
- 我们的解决方案目前正在链接到标记中的文件。
- 我真的希望澄清这个过程。
醇>
上下文:
(抱歉)... 元素不是我的选择器的目标,从头部的脚本。语法是正确的,因为它没有问题地定位HTML标记。
我的理解是在完全构造DOM之后,就会触发就绪方法/结果监听器。
我相信我已经知道了:
我知道脚本最好放在标记中的结束体标记上方。
我知道当tokenizer遇到脚本标记时,它会停止所有内容并执行脚本(除非延迟/异步)。
我知道这就是为什么理想情况下它们应该放在关闭的body标签之上,以便DOM准备就绪。
- 醇>
我知道jQuery ready方法会附加一个监听器,当浏览器在加载DOM后切换到就绪状态时,会触发它。
问题:
考虑到所有这些,由于标记器的原因,在头部中的位置会使就绪方法无法正常执行吗?
- 醇>
这真的只是为了避免碰撞/覆盖多个window.onloads吗? (应该澄清。)
答案 0 :(得分:1)
考虑到所有这些,由于标记化器的原因,在头部中的位置使得ready方法无法正常执行吗?
错误。当DOM完全加载时,ready()
方法被称为 ,所有ready()
都会建立一个等待DOM加载的侦听器,以便{当DOM准备好被操作时,会执行{1}}方法,换句话说,它会向ready()
事件添加一个监听器,该事件只有在文档已满载时才会被调用和执行。
这真的只是为了避免碰撞/覆盖多个onloads吗?
“碰撞/覆盖”是什么意思?您可以让多个侦听器在JavaScript中侦听相同的事件,并且它们不会相互覆盖或冲突。
答案 1 :(得分:1)
从你的问题:
好吧,有点儿。 jQuery我知道jQuery ready方法等待,直到浏览器在加载DOM后切换到它的就绪状态。
ready
方法不会等待。它附加了一个事件监听器。该功能已附加,但未执行。该功能仅在DOM准备就绪时执行;页面的其余部分继续加载。
你真的在这里进行微观优化。是的,将script
元素放在body
的末尾是理想的,但它会在现实中产生最小的差异,除非您有一个庞大,复杂且耗时的脚本。