Javascript和jQuery执行/序列

时间:2013-11-01 14:47:58

标签: javascript jquery browser

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

如果我好像在这里回答我自己的问题,请原谅我,但我觉得我在这个过程中错过了一些关键词。

我被告知我的选择者没有参加,因为DOM没有准备好提出这个问题。脚本最初使用现成的jQuery ready方法。

谢谢大家。

问题:

  
      
  1. 无法访问Drupal模板文件。
  2.   
  3. 只能添加头部。
  4.   
  5. 使用jQuery添加对脚本标记来说并不太有用。
  6.   
  7. 我们的解决方案目前正在链接到标记中的文件。
  8.   
  9. 我真的希望澄清这个过程。
  10.   

上下文:

  

(抱歉)...   元素不是我的选择器的目标,从头部的脚本。语法是正确的,因为它没有问题地定位HTML标记。

     

我的理解是在完全构造DOM之后,就会触发就绪方法/结果监听器。

我相信我已经知道了

  
      
  1. 我知道脚本最好放在标记中的结束体标记上方。

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

  4.   
  5. 我知道这就是为什么理想情况下它们应该放在关闭的body标签之上,以便DOM准备就绪。

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

  8.   

问题

  
      
  1. 考虑到所有这些,由于标记器的原因,在头部中的位置会使就绪方法无法正常执行吗?

  2.   
  3. 这真的只是为了避免碰撞/覆盖多个window.onloads吗? (应该澄清。)

  4.   

2 个答案:

答案 0 :(得分:1)

  

考虑到所有这些,由于标记化器的原因,在头部中的位置使得ready方法无法正常执行吗?

错误。当DOM完全加载时,ready()方法被称为 ,所有ready()都会建立一个等待DOM加载的侦听器,以便{当DOM准备好被操作时,会执行{1}}方法,换句话说,它会向ready()事件添加一个监听器,该事件只有在文档已满载时才会被调用和执行。

  

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

“碰撞/覆盖”是什么意思?您可以让多个侦听器在JavaScript中侦听相同的事件,并且它们不会相互覆盖或冲突。

答案 1 :(得分:1)

从你的问题:

  

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

好吧,有点儿。 jQuery ready方法不会等待。它附加了一个事件监听器。该功能已附加,但未执行。该功能仅在DOM准备就绪时执行;页面的其余部分继续加载。

你真的在这里进行微观优化。是的,将script元素放在body的末尾是理想的,但它会在现实中产生最小的差异,除非您有一个庞大,复杂且耗时的脚本。