Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果脚本位于正文末尾,是否应该使用DOM就绪函数?_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 如果脚本位于正文末尾,是否应该使用DOM就绪函数?

Javascript 如果脚本位于正文末尾,是否应该使用DOM就绪函数?,javascript,jquery,dom,Javascript,Jquery,Dom,我知道,在jQuery中,我们被告知要使用$(document).ready(),以确保DOM元素准备好进行交互。我知道,如果脚本标记位于中,这一点肯定适用。如果它们位于的末尾,在所有DOM元素之后,我还应该使用DOM就绪函数吗?有没有浏览器,如果我没有,我的代码会失败 谢谢 DOM ready函数确保实际创建了整个DOM,以便可以访问文档中的所有元素。正常的窗口。onload仅在加载所有图像时加载,而jQuery的事件在文档结构存在时立即触发。如果您需要在“文档加载时”发生某些事情,那么除了使

我知道,在jQuery中,我们被告知要使用
$(document).ready()
,以确保DOM元素准备好进行交互。我知道,如果脚本标记位于
中,这一点肯定适用。如果它们位于
的末尾,在所有DOM元素之后,我还应该使用DOM就绪函数吗?有没有浏览器,如果我没有,我的代码会失败


谢谢

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

我从未遇到过无法访问脚本之前出现的html元素DOM的浏览器

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

你有什么理由想避免这种情况吗


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

将脚本放在末尾还有另一个原因:浏览器不会并行加载JS文件,因为它们会影响后面的所有内容。事实上,在下载并解析JS文件之前,浏览器中的所有内容都会停止——文本、图像等等。因此,除非您必须提前加载,否则请在页面末尾加载您的JS。

块中,有一件事您不能在
之前执行:将DOM内容附加到正文中。这就是导致IE抛出与可怕的“操作中止”匹配的append-relative-to-parse问题

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


它不会在最新的Mozilla、Opera或WebKit浏览器上为您提供任何信息,因为这些浏览器会在一瞬间启动
ready
。它将避免IE中令人不快但基本无害的黑客循环,并且对于其他(较旧或更模糊的)浏览器,它将更快地触发,否则这些浏览器将退回到等待
onload

的状态。因此,我的问题是,当我的脚本执行时,文档是否已充分加载?我已经在使用jQuery进行常规DOM访问了,但我的脚本是以这样的方式组织的,为了正确地模块化某些DOM就绪操作,它们最终会出现在代码的不同部分。如果我可以删除$(function(){}),它看起来会更干净,但我不愿意这样做,除非我确定删除它不会有任何伤害。实际上大多数现代浏览器都可以并行加载脚本--请参见,并行加载并不能解决您提到的另一个问题,浏览器在脚本加载并执行之前会停止解析和渲染,所以将脚本放在底部仍然是一个明智的建议。@Annie:谢谢您的链接。我没有意识到他们已经解决了FF3.5和MSIE8中的并行脚本下载问题。有趣的是,它们都将并行下载script/script和script/stylesheet,而不是script/image。知道为什么吗?不知道,IE允许操纵
元素的包含父元素。因此,如果
标记在结束之前,它可以将内容附加到正文。