我对domready,onload,body,head有疑问。当我将一些js连接到头部时,它不起作用。否则,它在体内工作。
我注意到它在JSFIDDLE中提到过。
这有什么意义和不同之处?
你能解释一下吗?
答案 0 :(得分:3)
访问DOM的Javascript必须不执行UNTIL已加载DOM。
在文档的<head>
部分中运行的代码将在加载DOM之前执行,因此如果它尝试在DOM上运行,则DOM将只是空的。
在文档的<body>
部分中运行的代码将在该脚本标记之前的任何DOM元素之后执行,但是在脚本标记之后的任何DOM元素之前执行。
如果您将<script>
标记放在<body>
标记之前</body>
部分的最末端,那么当该脚本执行时,整个DOM就会就绪。
DOMContentLoaded
(jsFiddle调用onDomReady
)是一个事件,当DOM现在已加载并可供脚本访问时触发。如果在DOMContentLoaded事件触发时运行代码,那么DOM将为您的代码在此时访问做好准备。
window.onload
是一个事件,当DOM现在被加载并且页面的HTML中指定的任何资源也被加载(如图像)时触发。这总是在DOMContentLoaded事件之后触发。
您可以在此处查看此问题的进一步说明:pure JavaScript equivalent to jQuery's $.ready() how to call a function when the page/dom is ready for it
如果代码在<body>
中有效,但在<head>
中没有,那么在DOM准备好之前,您可能在<head>
标记中过早地运行代码。您可以将其保留在<body>
的末尾附近,也可以将其连接到其中一个加载事件,然后根据需要将其放在<head>
标记中。
答案 1 :(得分:0)
<head>
包含有关页面属性,CSS和JavaScript的所有信息。虽然CSS和JavaScript也可以包含在体内。主管将包括Page的元信息,标题,基本URL等。
<body>
包含正文的实际内容。访问该网站的哪些用户实际上看到或与之互动。
DOM
是文档对象模型。它是基本结构,或者你可以说是页面所在页面的骨架。
domready
是DOM加载完成后立即触发的事件。例如:假设一个页面只有一个图像。它将等待解析图像标记。一旦收到图像标签,它就会被触发。它不会等待从源加载整个图像。
onload
是在加载完整(DOM +内容)页面时触发的事件。在donready
中的上一个示例中,onload
将等待从源中提取图像,然后将被触发。