#名词区别篇:事件流&事件委托&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,可以控制网页的布局、颜色、字体、大小等方面的样式,从而实现更丰富、美观的页面设计。

相关推荐
Remember_9936 分钟前
【数据结构】初识 Java 集合框架:概念、价值与底层原理
java·c语言·开发语言·数据结构·c++·算法·游戏
hqwest12 分钟前
码上通QT实战33--监控页面14-刻度盘旋转
开发语言·qt·qdial·qlcdnumber·modbus功能码06
源代码•宸13 分钟前
Golang原理剖析(channel源码分析)
开发语言·后端·golang·select·channel·hchan·sudog
nvd1114 分钟前
企业级 LLM 实战:在受限环境中基于 Copilot API 构建 ReAct MCP Agent
前端·copilot
liuyunshengsir15 分钟前
golang Gin 框架下的大数据量 CSV 流式下载
开发语言·golang·gin
BlockChain88815 分钟前
MPC 钱包实战(三):Rust MPC Node + Java 调度层 + ETH 实际转账(可运行)
java·开发语言·rust
吉吉6116 分钟前
在 Windows 和 Linux 的 VSCode 中配置 PHP Debug
开发语言·php
蜜汁小强16 分钟前
macOS 上升级到 python 3.12
开发语言·python·macos
Remember_99317 分钟前
【数据结构】Java集合核心:线性表、List接口、ArrayList与LinkedList深度解析
java·开发语言·数据结构·算法·leetcode·list
小旭952718 分钟前
【Java 面试高频考点】finally 与 return 执行顺序 解析
java·开发语言·jvm·面试·intellij-idea