如果将脚本标签放在body标签的末尾,我应该等待DOMContentLoaded事件吗?

Fro*_*art 6 html javascript dom

如果DOMContentLoadedscript带有相应JS文件的标签放在标签末尾,我应该等待事件body吗?

index.html

<!DOCTYPE HTML>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="popup.css">
  </head>
  <body>
    <div id="container"></div>
    <script src="popup.js"></script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

popup.js

document.addEventListener('DOMContentLoaded', onDOMContentLoaded);
Run Code Online (Sandbox Code Playgroud)

Grz*_*orz 5

基本上没有 如果脚本修改了元素,则该元素必须存在。
如果将脚本放在该元素之后,则该脚本存在。
如果将它放在“之前”,则它不存在,您可能要使用DOMContentLoaded等待脚本执行,直到确定它存在为止。

<div id="myid"></div>
<script>
    getElementById('myid'); // it will work, Element myid Is defined
<script>
Run Code Online (Sandbox Code Playgroud)

但是这个

<script>
    getElementById('myid'); // it will fail, it's not yet defined, it will be
    // Using DomContentLoaded here would be requrired
<script>
<div id="myid"></div>
Run Code Online (Sandbox Code Playgroud)