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

2023-09-16 16:35:42

 🎬 岸边的风:个人主页

 🔥 个人专栏 :《 VUE 》 《 javaScript 》

⛺️ 生活的理想,就是为了理想的生活 !

在这里插入图片描述

目录

引言

1. DOMContentLoaded

1.1 属性

1.2 API

1.3 应用场景

1.4 示例代码

2. load

2.1 属性

2.2 API

2.3 应用场景

3. beforeunload

3.1 属性

3.2 API

3.3 应用场景

3.4 示例代码

4. unload

4.1 属性

4.2 API

4.3 应用场景

4.4 示例代码

5. 总结


引言

在 Web 开发中,了解页面生命周期是非常重要的。页面生命周期定义了页面从加载到卸载的整个过程,包括各种事件和阶段。在本文中,我们将详细介绍四个关键事件:DOMContentLoaded、load、beforeunload 和 unload。我们将探讨这些事件的属性、API、应用场景,并提供一些代码示例和参考资料。

1. DOMContentLoaded

1.1 属性

  • type:事件类型,值为 "DOMContentLoaded"
  • bubbles:布尔值,指示事件是否会冒泡,默认为 false
  • cancelable:布尔值,指示事件是否可以被取消,默认为 false
  • target:事件的目标对象,即触发事件的元素

1.2 API

  • EventTarget.addEventListener():用于注册事件监听器,以便在 DOMContentLoaded 事件触发时执行相应的处理函数。

1.3 应用场景

DOMContentLoaded 事件在页面的 HTML 和 DOM 树加载完成后触发,但在所有外部资源(如图像、样式表、脚本等)加载完成之前。这使得我们可以在 DOM 加载完成后执行一些操作,例如初始化页面元素、注册事件监听器、执行一些初始的 JavaScript 逻辑等。

常见的应用场景包括:

  • 初始化页面元素
  • 注册事件监听器
  • 发送初始的 AJAX 请求
  • 执行一些初始的 JavaScript 逻辑

1.4 示例代码

document.addEventListener('DOMContentLoaded', function() {
  // DOMContentLoaded 事件触发后执行的逻辑
  console.log('DOMContentLoaded event triggered');
});

在上面的示例中,我们使用 addEventListener 方法注册了一个 DOMContentLoaded 事件监听器。当 DOMContentLoaded 事件触发时,控制台将输出 'DOMContentLoaded event triggered'

2. load

2.1 属性

  • type:事件类型,值为 "load"
  • bubbles:布尔值,指示事件是否会冒泡,默认为 false
  • cancelable:布尔值,指示事件是否可以被取消,默认为 false
  • target:事件的目标对象,即触发事件的元素

2.2 API

  • EventTarget.addEventListener():用于注册事件监听器,以便在 load 事件触发时执行相应的处理函数。

2.3 应用场景

load 事件在整个页面及其所有外部资源(如图像、样式表、脚本等)加载完成后触发。这意味着页面的所有内容已经可用,并且可以执行与页面渲染和交互相关的操作。

常见的应用场景包括:

  • 执行一些需要页面完全加载后才能进行的操作
  • 初始化和配置第三方库和插件
  • 启动动画或其他视觉效果

2.4 示例代码

window.addEventListener('load', function() {
  // load 事件触发后执行的逻辑
  console.log('load event triggered');
});

在上面的示例中,我们使用 addEventListener 方法注册了一个 load 事件监听器。当 load 事件触发时,控制台将输出 'load event triggered'

3. beforeunload

3.1 属性

  • type:事件类型,值为 "beforeunload"
  • bubbles:布尔值,指示事件是否会冒泡,默认为 false
  • cancelable:布尔值,指示事件是否可以被取消,默认为 true
  • target:事件的目标对象,即触发事件的元素

3.2 API

  • EventTarget.addEventListener():用于注册事件监听器,以便在 beforeunload 事件触发时执行相应的处理函数。
  • Event.preventDefault():用于阻止默认的 beforeunload 行为,例如显示浏览器默认的退出提示框。

3.3 应用场景

beforeunload 事件在页面即将被卸载(关闭、刷新、导航到其他页面等)之前触发。它通常用于询问用户是否确定离开当前页面,并可以在事件处理函数中执行一些清理操作。

常见的应用场景包括:

  • 提示用户保存未保存的数据或离开前的确认提示
  • 执行清理操作,如取消未完成的 AJAX 请求、释放资源等

3.4 示例代码

window.addEventListener('beforeunload', function(event) {
  // beforeunload 事件触发时执行的逻辑
  // 可以在这里提示用户保存未保存的数据或离开前的确认提示
  event.preventDefault(); // 阻止默认的 beforeunload 行为
  event.returnValue = ''; // Chrome 需要设置 returnValue 属性
});

在上面的示例中,我们使用 addEventListener 方法注册了一个 beforeunload 事件监听器。在事件处理函数中,我们可以执行一些提示用户保存数据或离开前的确认逻辑。通过调用 preventDefault 方法,我们阻止了默认的 beforeunload 行为,并通过设置 returnValue 属性(在某些浏览器中需要设置)为空字符串来确保提示框的显示。

4. unload

4.1 属性

  • type:事件类型,值为 "unload"
  • bubbles:布尔值,指示事件是否会冒泡,默认为 false
  • cancelable:布尔值,指示事件是否可以被取消,默认为 false
  • target:事件的目标对象,即触发事件的元素

4.2 API

  • EventTarget.addEventListener():用于注册事件监听器,以便在 unload 事件触发时执行相应的处理函数。

4.3 应用场景

unload 事件在页面即将被卸载(关闭、刷新、导航到其他页面等)时触发。它可以用于执行一些清理操作,如释放资源、取消未完成的请求等。

常见的应用场景包括:

  • 释放页面所使用的资源,如清除定时器、取消事件监听器等
  • 发送最后的统计数据或日志

4.4 示例代码

window.addEventListener('unload', function() {
  // unload 事件触发后执行的逻辑
  console.log('unload event triggered');
});

在上面的示例中,我们使用 addEventListener 方法注册了一个 unload 事件监听器。当 unload 事件触发时,控制台将输出 'unload event triggered'

5. 总结

页面生命周期的四个重要事件:DOMContentLoaded、load、beforeunload 和 unload,定义了页面从加载到卸载的不同阶段。这些事件可以帮助我们在合适的时机执行相关的操作,提供更好的用户体验和数据处理。

  • DOMContentLoaded 事件在 HTML 和 DOM 树加载完成后触发,适用于执行与 DOM 相关的初始化操作。
  • load 事件在整个页面及其外部资源加载完成后触发,适用于执行与页面渲染和交互相关的操作。
  • beforeunload 事件在页面即将被卸载之前触发,适用于询问用户是否确定离开页面或执行一些清理操作。
  • unload 事件在页面被卸载后触发,适用于执行最后的清理操作。

了解页面生命周期事件及其应用场景对于优化页面加载和交互体验非常重要。通过合理利用这些事件,我们可以在适当的时机执行相关的逻辑,提供更好的用户交互和数据处理

更多推荐

【UE 粒子练习】02——使用一些常用的模块来创建粒子

目录效果步骤一、创建材质二、创建粒子2.1必需模块2.2初始大小模块2.3初始位置模块2.4初始速度模块2.5生命周期模块2.6加速-》恒加速度模块2.7生成模块2.8生命内颜色模块2.9尺寸-》大小随速度模块2.10碰撞-》Actor碰撞模块2.11光源-》光照模块效果步骤一、创建材质1.新建一个材质,这里命名为“M

如何使用WOFOST和PCSE这两个农业生产模型进行作物生长模拟??

WOFOST(WorldFoodStudies)和PCSE(PythonCropSimulationEnvironment)是两个用于农业生产模拟的模型:WOFOST是一个经过多年开发和验证的模型,被广泛用于全球的农业生产模拟和农业政策分析;采用了模块化的结构,可以对不同的农作物和环境条件进行参数化和适应;WOFOST

五个很实用的IDEA使用技巧

日常开发中,相信广大Java开发者都使用过IntelliJIDEA作为开发工具,IntelliJIDEA是一款优秀的Java集成开发环境,它提供了许多强大的功能和快捷键,可以帮助开发者提高编码效率和质量。除了一些常见的技巧,如自动导包、智能补全、重构工具等。IntelliJIDEA还有一些不为人知的技巧,可能很多开发者

基于 kubernetes+docker构建高可用、高性能的 web 、CICD集群

文章目录一、项目架构图二、项目描述三、项目环境四、环境准备1、IP地址规划2、关闭selinux和firewall3、配置静态ip地址4、修改主机名5、升级系统(可做可不做)6、添加hosts解析五、项目步骤1、设计整个集群的架构,规划好服务器的IP地址,搭建集群2、部署ansible完成相关软件的自动化运维工作,部署

TCP协议

TCP收发数据流程TCP如何收发数据分段发送可靠传输在TCP协议中,任何时候、任何一方都可以主动发送数据给另一方为了解决数据报丢失、数据报错乱等问题,TCP协议要求:接收方收到数据报后,必须对数据报进行确认!seq:表示这次数据报的序号ACK:表示这次数据报是一个确认数据报ack:表示期望下一次接收的数据报序号发送方如

NLP技术如何为搜索引擎赋能

目录1.NLP关键词提取与匹配在搜索引擎中的应用1.关键词提取例子2.关键词匹配例子Python实现2.NLP语义搜索在搜索引擎中的应用1.语义搜索的定义例子2.语义搜索的重要性例子Python/PyTorch实现3.NLP个性化搜索建议在搜索引擎中的应用1.个性化搜索建议的定义例子2.个性化搜索建议的重要性例子Pyt

【计算机辅助蛋白质结构分析、分子对接、片段药物设计技术与应用】

第一天上午生物分子互作基础1.生物分子相互作用研究方法1.1蛋白-小分子、蛋白-蛋白相互作用原理1.2分子对接研究生物分子相互作用1.3蛋白蛋白对接研究分子相互作用蛋白数据库1.PDB数据库介绍1.1PDB蛋白数据库功能1.2PDB蛋白数据可获取资源1.3PDB蛋白数据库对药物研发的重要性2.PDB数据库的使用2.1靶

mysql 注入之权限

SQL注入之高权限注入在数据库中区分有数据库系统用户与数据库普通用户,二者的划分主要体现在对一些高级函数与资源表的访问权限上。直白一些就是高权限系统用户拥有整个数据库的操作权限,而普通用户只拥有部分已配置的权限。网站在创建的时候会调用数据库链接,会区分系统用户链接与普通用户链接;当多个网站存在一个数据库的时候,root

可口可乐用新的“Y3000”口味拥抱有争议的人工智能图像生成器

可口可乐公司已经迈出了一大步,用它的释放;排放;发布据报道,可口可乐Y3000零糖“限量版”饮料是与人工智能共同创造的。它未来的名字让人想起3000年的味道(还有977年),但它的营销依赖于人工智能从2023年产生的图像——这要归功于有争议的图像合成模型稳定扩散.稳定扩散是在推出“可口可乐Y3000AICam”移动应用

Ansible之Playbook的任务控制

一)Ansible任务控制基本介绍这⾥主要来介绍PlayBook中的任务控制。任务控制类似于编程语⾔中的if…、for…等逻辑控制语句。这⾥我们给出⼀个实际场景应⽤案例去说明在PlayBook中,任务控制如何应⽤。在下⾯的PlayBook中,我们创建了tomcat、www和mysql三个⽤户。安装了Nginx软件包、并

2023年华数杯数学建模C题母亲身心健康对婴儿成长的影响解题全过程文档及程序

2023年华数杯全国大学生数学建模C题母亲身心健康对婴儿成长的影响原题再现:母亲是婴儿生命中最重要的人之一,她不仅为婴儿提供营养物质和身体保护,还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况,如抑郁、焦虑、压力等,可能会对婴儿的认知、情感、社会行为等方面产生负面影响。压力过大的母亲可能会对婴儿的生理和心理发展

热文推荐