代码之家  ›  专栏  ›  技术社区  ›  Matchu

如果脚本在主体的末尾,我应该使用dom-ready函数吗?

  •  8
  • Matchu  · 技术社区  · 15 年前

    我知道,在jquery中,我们被告知要使用 $(document).ready() 为了确保DOM元素准备好进行交互。我知道如果脚本标记在 <head> . 如果它们在 <body> ,在所有的dom元素之后,我还应该使用一个dom就绪函数吗?有没有浏览器,如果我没有,我的代码会失败?

    谢谢!

    4 回复  |  直到 15 年前
        1
  •  13
  •   bobince    15 年前

    有一件事你不能在 <script> 前一个街区 </body> :将DOM内容附加到正文。这是一个与解析问题相关的附加问题,它导致IE抛出与可怕的__操作中止__的匹配。

    因此,如果您有这样做的脚本或插件,就不能在body元素的末尾以内联方式调用它们。否则继续。

    它不会在最新的Mozilla、Opera或Webkit浏览器上提供任何信息,因为这些浏览器会启动 ready 不管怎样,过一会儿。它将避免在IE中出现令人不快但基本上无害的黑客循环,并且对于其他(旧的或更模糊的)浏览器来说,它将很快启动,否则它们将回到等待状态。 onload .

        2
  •  1
  •   Peter Rowell    15 年前

    还有另一个原因要把脚本放在末尾:浏览器是这样做的 并行加载JS文件,因为它们会影响后面的所有内容。事实上,在JS文件被下载和解析之前,浏览器中的所有内容都会停止——文本、图像和所有内容。所以除非你 不得不 尽早加载它们,在页面末尾加载JS。

        3
  •  0
  •   Christian P.    15 年前

    dom ready函数确保实际创建了整个dom,以便可以访问文档中的所有元素。正常人 window.onload 仅当所有图像都已加载时加载,而jquery的事件会在文档结构存在时立即触发。如果您需要在“文档加载时”发生某些事情,那么除了 $(document).ready() .

        4
  •  0
  •   Roland Bouman    15 年前

    我从来没有遇到过一个浏览器,在那里你不能访问出现在我的脚本之前的HTML元素的DOM。

    也就是说,如果您已经引入了jquery,我可能会使用ready()方法,只是为了让其他用于jquery的人更容易理解代码。

    你有什么理由不想这样吗?

    (如果您正在寻找避免加载jquery的方法,那么,根据我的经验,您总是可以访问出现在脚本前面的元素的DOM。)