汪的爱琪 2024-03-08 21:35 采纳率: 67.5%
浏览 21
已结题

前端的DOMContentLoaded 不触发

如果DOMContentLoaded 是在HTML 文档解析完成并且所有的 DOM 元素已经生成之后触发,那么我的为什么控制台不输出111和222?

img

img

img

img

img

  • 写回答

3条回答 默认 最新

  • 关注

    汪的爱琪 晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    根据您提供的代码片段和问题描述,DOMContentLoaded 事件可能没有触发的原因在于 JavaScript 脚本的加载时机。在 HTML 中,<script> 标签被放在了 <head> 标签内,这意味着脚本会在文档的HTML解析过程中(尤其是DOM构建完成之前)就开始执行。因此,在脚本尝试监听 DOMContentLoaded 事件时,该事件可能已经触发过了。

    解决方案:

    1. <script> 标签移至 <body> 标签底部,确保在它执行前 DOM 已经加载完毕:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登录页</title>
    </head>
    <body>
        <!-- ... 其他DOM元素 ... -->
        <script src="js/index.js" type="text/javascript"></script>
    </body>
    </html>
    
    1. 如果出于某些原因需要保留在 <head>,您可以使用异步加载(async 属性)或延迟执行(defer 属性),让浏览器在不阻塞页面解析的前提下正确处理DOMContentLoaded事件:
    <head>
        <!-- ... 其他头部内容 ... -->
        <script src="js/index.js" type="text/javascript" defer></script>
    </head>
    

    通过以上调整,JavaScript 文件将会在DOM构建完成后执行,从而确保 DOMContentLoaded 事件可以正常触发。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月9日
  • 创建了问题 3月8日

悬赏问题

  • ¥15 有人会用py或者r画这种图吗
  • ¥15 MOD04_3K图像预处理
  • ¥15 [VASP]关于超胞大小和k 点网格的收敛性测试
  • ¥15 pip下载paddle2onnx离谱错误
  • ¥60 db2move nlzxams import 导出db2备份数据报错
  • ¥15 关于#python#的问题:全文总结功能咨询
  • ¥15 俄罗斯方块中无法同时消除多个满行
  • ¥15 使用gojs3.0,如何在nodeDataArray设置好text的位置,再go.TextBlock alignment中进行相应的改变
  • ¥15 psfusion图像融合指标很低
  • ¥15 银河麒麟linux系统如何修改/etc/hosts权限为777