#名词区别篇:事件流&事件委托&addEventListener&白屏时间&首屏时间

事件流

事件捕获 ---从外到内

到达目标

事件冒泡---从内到外

事件委托

定义:当有大量子元素触发事件时,将事件监听器绑定在父元素进行监听,此时数百个事件监听器变成一个监听器。

e.currentTarget 与 e.target 有何区别

Event 接口的只读属性 currentTarget 表示的,标识是当事件沿着 DOM 触发时事件的当前目标。它总是指向事件绑定的元素,而 Event.target 则是事件触发的元素。

addEventListener

js 复制代码
const myElement = document.getElementById('myElement');

// 添加事件监听器,捕获阶段触发,只触发一次
myElement.addEventListener('click', myFunction, { capture: true, once: true });

function myFunction(event) {
  console.log('Element clicked once during the capture phase.');
}

addEventListener 还有一些可选参数:

  1. capture 一个布尔值,指定事件是在捕获阶段(true)还是冒泡阶段(false)触发监听器。

    默认为 false,即在冒泡阶段触发。

  2. once 一个布尔值,指定监听器是否在执行后自动删除。

    如果为 true,则监听器只会在元素上的下一个事件发生时触发一次,然后自动删除。

  3. passive 一个布尔值,如果为 true,表示监听器永远不会调用 preventDefault()。这对于优化滚动性能非常有用

白屏时间

白屏时间是指用户打开网页到页面开始呈现内容的时间间隔。具体来说,白屏时间包括了从用户发起导航到浏览器开始渲染第一帧内容之前的时间。

计算白屏时间的一种方法是使用浏览器的 performance.timing API。以下是一个示例:

js 复制代码
const navigationStart = performance.timing.navigationStart;
const domLoading = performance.timing.domLoading;

const blankScreenTime = domLoading - navigationStart;
console.log('白屏时间:', blankScreenTime, '毫秒');

首屏时间

首屏时间是指用户打开网页到浏览器首次渲染页面的时间间隔。具体来说,它表示浏览器首次将像素呈现到屏幕上的时间。

计算首屏时间通常使用 performance.getEntriesByType('paint') 方法,检索页面渲染相关的性能条目。以下是一个示例:

js 复制代码
const paintEntries = performance.getEntriesByType('paint');
const firstPaintTime = paintEntries.length > 0 ? paintEntries[0].startTime : 0;
console.log('首屏时间:', firstPaintTime, '毫秒');

在上述示例中,performance.getEntriesByType('paint') 返回页面的 paint 类型性能条目数组,其中包括首次绘制(first-paint)和首次内容绘制(first-contentful-paint)等。示例中直接使用了第一个 paint 条目的 startTime 属性作为首屏时间。

需要注意的是,首屏时间的计算方式可能因浏览器而异。在上述示例中,使用了 first-paint,但有些浏览器可能使用 first-contentful-paint 或其他类似的指标。在实际使用中,最好结合使用不同的指标以获得更全面的性能信息。

html叫什么

HTML 的全称是 "HyperText Markup Language"(超文本标记语言)。HTML 是一种用于创建和组织网页内容的标记语言。它由一系列的标签(标记)组成,每个标签对应着文档中的一个元素,用于描述文档的结构和语义。

css叫什么

CSS 的全称是 "Cascading Style Sheets",中文翻译为 "层叠样式表"。CSS 是一种样式表语言,用于描述 HTML 或 XML 文档的展示样式。通过 CSS,可以控制网页的布局、颜色、字体、大小等方面的样式,从而实现更丰富、美观的页面设计。

相关推荐
charlie11451419118 分钟前
嵌入式C++工程实践第20篇:GPIO 输入模式内部电路 —— 芯片是如何“听“到外部信号的
开发语言·c++·stm32·单片机
Wect31 分钟前
React 性能优化精讲
前端·react.js·性能优化
xinhuanjieyi41 分钟前
极语言让ai学习的方法
开发语言·学习
xiaogutou11211 小时前
2026年历史课件PPT模板选购指南:教师备课效率与精度的平衡方案
开发语言·c#
追风筝的人er1 小时前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
前端·vue.js·后端
无敌的黑星星1 小时前
Java8 CompletableFuture 实战指南
linux·前端·python
StockTV1 小时前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
chaofan9801 小时前
GPT-5.5 领衔 Image 2.0:像素级控制时代,AI 绘图告别开盲盒
开发语言·人工智能·python·gpt·自动化·api
雁鸣零落1 小时前
如何在 Chrome 中查看其他浏览器的书签?书签空间订阅与侧边栏只读切换指南
前端·chrome·edge浏览器
爱码小白2 小时前
Python 异常处理 完整学习笔记
开发语言·python