JavaScript页面生命周期:DOMContentLoaded,load,beforeunload,unload

🧑‍🎓 个人主页:《爱蹦跶的大A阿》

🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》

​ 

✨ 前言

页面加载 是 web 开发中的一个重要概念,指的是浏览器加载网页的过程。在这个过程中,会发生一系列事件,其中 DOMContentLoadedonload 两个事件是重要的里程碑。

DOMContentLoaded 事件 发生在 HTML 文档解析完成并构建了 DOM 树之后。此时,页面中的所有元素都已加载,但外部资源(例如图片、样式表、脚本等)可能尚未加载完成。

onload 事件 发生在整个页面加载完成,包括所有外部资源之后。此时,页面可以完全呈现给用户。

理解 DOMContentLoaded 和 onload 事件 的区别和应用场景,对于开发人员来说至关重要。本文将深入探讨这两个事件,并提供大量代码示例,帮助你:

  • 掌握 DOMContentLoaded 和 onload 事件的触发时机
  • 了解如何使用这两个事件来实现不同的功能
  • 学习如何阻止事件传播
  • 掌握如何使用相关属性

无论你是初学者还是经验丰富的开发人员,本文都将为你提供一些有价值的信息。

在阅读本文之前,请确保你已经具备以下基础知识:

  • HTML 基础
  • JavaScript 基础

准备好了吗?让我们开始吧!

✨ 正文

简介

当浏览器加载网页时,会发生一系列事件。其中,DOMContentLoadedonload 两个事件是重要的页面加载事件,用于检测页面加载到不同阶段。

DOMContentLoaded 事件

当 HTML 文档解析完成,并构建了 DOM 树时,会触发 DOMContentLoaded 事件。此时,页面中的所有元素都已加载,但外部资源(例如图片、样式表、脚本等)可能尚未加载完成。

onload 事件

当整个页面加载完成,包括所有外部资源,会触发 onload 事件。

事件处理程序

可以使用 addEventListener() 方法为元素添加 DOMContentLoadedonload 事件处理程序。

代码示例

document.addEventListener("DOMContentLoaded", function() {// 页面加载完成,DOM 树已构建
});window.onload = function() {// 页面加载完成,包括所有外部资源
};

阻止事件传播

可以使用 stopPropagation() 方法阻止事件传播。

代码示例

document.addEventListener("DOMContentLoaded", function(event) {event.stopPropagation();// 页面加载完成,DOM 树已构建
});

相关属性

  • readyState:用于指示页面的加载状态。

更多信息

  • DOMContentLoaded Event: <移除了无效网址>
  • Window.onload Event: Window: load event - Web APIs | MDN

代码示例

使用 DOMContentLoaded 事件显示提示信息

<p id="message">页面正在加载...</p><script>
document.addEventListener("DOMContentLoaded", function() {document.getElementById("message").innerHTML = "页面加载完成!";
});
</script>

使用 onload 事件显示图像

<img id="image" src="image.jpg"><script>
window.onload = function() {document.getElementById("image").style.display = "block";
};
</script>

 使用 DOMContentLoadedonload 事件进行验证

<form action="/action_page.php"><input type="text" name="name" id="name"><input type="submit" value="Submit">
</form><script>
document.addEventListener("DOMContentLoaded", function() {document.getElementById("name").addEventListener("focus", function() {if (name === "") {alert("Please enter your name");return false;}});
});window.onload = function() {document.getElementById("form").addEventListener("submit", function(event) {event.preventDefault();const formData = new FormData(document.getElementById("form"));// 这里处理表单数据// 提交表单document.getElementById("form").submit();});
};
</script>

✨ 结语

DOMContentLoadedonload 两个事件是重要的页面加载事件,用于检测页面加载到不同阶段。它们可以用于各种目的,例如显示提示信息、加载图像、进行验证等等。

希望本文对你有所帮助!

以下是一些额外的建议:

  • 阅读 HTML 和 JavaScript 文档,以了解更多关于 DOMContentLoaded 和 onload 事件的信息。
  • 练习使用 DOMContentLoaded 和 onload 事件来实现不同的功能。
  • 在实际项目中使用 DOMContentLoaded 和 onload 事件。

祝你学习愉快!

        

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/459290.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Nicn的刷题日常】之有序序列合并

1.题目描述 描述 输入两个升序排列的序列&#xff0c;将两个序列合并为一个有序序列并输出。 数据范围&#xff1a; 1≤&#xfffd;,&#xfffd;≤1000 1≤n,m≤1000 &#xff0c; 序列中的值满足 0≤&#xfffd;&#xfffd;&#xfffd;≤30000 0≤val≤30000 输入描述…

Oracle 面试题 | 17.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

【知识图谱+大模型的紧耦合新范式】Think-on-Graph:解决大模型在医疗、法律、金融等垂直领域的幻觉

Think-on-Graph&#xff1a;解决大模型在医疗、法律、金融等垂直领域的幻觉 Think-on-Graph 原理ToG 算法步骤&#xff1a;想想再查&#xff0c;查查再想实验结果 论文&#xff1a;https://arxiv.org/abs/2307.07697 代码&#xff1a;https://github.com/IDEA-FinAI/ToG Think…

Rust开发WASM,WASM Runtime运行

安装wasm runtime curl https://wasmtime.dev/install.sh -sSf | bash 查看wasmtime的安装路径 安装target rustup target add wasm32-wasi 创建测试工程 cargo new wasm_wasi_demo 编译工程 cargo build --target wasm32-wasi 运行 wasmtime ./target/wasm32-wasi/d…

【JVM篇】分析并讲解字节码文件

文章目录 &#x1f354;字节码文件⭐打开字节码文件的工具⭐字节码文件的组成✨具体分析 &#x1f354;字节码文件 字节码文件是一种中间表示形式&#xff0c;它通常由编译器将高级编程语言&#xff08;如Java、Python等&#xff09;源代码编译而成。字节码文件包含了程序的指…

Cox等级资料是个坑

R语言做&#xff01;初学者先进来看看&#xff01;&#xff01;&#xff01; SCI冲 COX多因素模型需要满足的条件&#xff1a; 1.各观测值间相互独立&#xff0c;即残差之间不存在自相关&#xff1b; 2.因变量和自变量之间存在线性关系&#xff1b; 3.残差的方差齐&#xf…

从Unity到Three.js(安装启动)

发现在3D数字孪生或模拟仿真方向&#xff0c;越来越多的公司倾向使用Web端程序&#xff0c;目前一直都是使用的Unity进行的Web程序开发&#xff0c;但是存在不少问题&#xff0c;比如内存释放、shader差异化、UI控件不支持复制或输入中文等。虽然大多数问题都可以找到解决方案&…

Spring GateWay

概述简介 能干什么 反向代理 鉴权 流量控制 熔断 日志监控 Spring Cloud Gateway 与Zuul的区别 在SpringCloud Finchley正式版之前&#xff0c;Spring Cloud推荐的网关是 Netflix提供的Zuul: 1、Zuul 1.x&#xff0c;是一个基于阻塞Ⅳ/O的APl Gateway 2、Zuul 1.x基于Servl…

【Java数据结构】ArrayList和LinkedList的遍历

一&#xff1a;ArrayList的遍历 import java.util.ArrayList; import java.util.Iterator; import java.util.List;/*** ArrayList的遍历*/ public class Test {public static void main(String[] args) {List<Integer> list new ArrayList<>();list.add(5);list…

Unity引擎学习笔记之【动画层操作】

动画层Animation Layer 一、动画器的三个基本状态 1. Any State&#xff08;任意状态&#xff09; “Any State”&#xff08;任意状态&#xff09;&#xff1a;这个状态可以用来连接多个状态机的任意状态转换。在动画控制器中&#xff0c;你可以使用“Any State”作为过渡条…

板块一 Servlet编程:第一节 HTTP协议理论与服务器请求响应原理 来自【汤米尼克的JAVAEE全套教程专栏】

板块一 Servlet编程&#xff1a;第一节 HTTP协议理论与服务器请求响应原理 一、HTTP特点二、HTTP中的 URL三、两种 HTTP 请求方法&#xff1a;GET 和 POST四、请求响应的底层请求头在服务器中表现响应头在服务器中表现 在上一个板块中我们完成了所有IDEA的基础配置工作&#xf…

学习 Redis 基础数据结构,不讲虚的。

学习 Redis 基础数据结构&#xff0c;不讲虚的。 一个群友给我发消息&#xff0c;“该学的都学了&#xff0c;怎么就找不到心意的工作&#xff0c;太难了”。 很多在近期找过工作的同学一定都知道了&#xff0c;背诵八股文已经不是找工作的绝对王牌。企业最终要的是可以创造价…