-2

我对 domready、onload、body、head 有疑问。当我将一些 js 链接到 head 时,它不起作用。否则,它在体内工作。

我在 JSFIDDLE 中注意到,它提到了。

这和区别的意义是什么?

你能解释一下吗?

4

2 回答 2

3

访问 DOM 的 Javascript 在加载 DOM 之前不得执行。

在文档部分中运行的代码<head>将在 DOM 加载之前执行,因此如果它尝试对 DOM 进行操作,则 DOM 将只是空的。

在文档部分中运行的代码将<body>在该脚本标记之前的任何 DOM 元素之后执行,但在该脚本标记之后的任何 DOM 元素之前执行。

如果您将标签放在标签之前的部分<script>末尾,那么当该脚本执行时整个 DOM 将准备就绪。<body></body>

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>,但在 中无效,那么您可能在 DOM 准备好之前<head>过早地在标签中运行代码。<head>您可以将其放在接近末尾的位置,<body>也可以将其连接到加载事件之一,然后可以根据需要将其放入<head>标签中。

于 2015-11-26T04:47:38.007 回答
0

<head>包含有关页面属性、CSS 和 JavaScript 的所有信息。虽然 CSS 和 JavaScript 也可以包含在正文中。Head 将包括 Page 的元信息、标题、基本 URL 等。

<body>包含正文的实际内容。访问网站的用户实际看到或与之交互。

DOM是文档对象模型。它是基本结构,或者您可以说页面所在的页面的骨架。

domready是一个在 DOM 完成加载后立即触发的事件。例如:假设一个页面只有一个图像。它将等待图像标签被解析。一旦收到图像标签,它就会被触发。它不会等待从源加载整个图像。

onload是在加载完成(DOM + 内容)页面时触发的事件。在前面的示例中donreadyonload将等待从源中获取图像,然后将其触发。

于 2015-11-26T04:55:34.510 回答