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

相关推荐
workflower2 小时前
单元测试-例子
java·开发语言·算法·django·个人开发·结对编程
YuanlongWang2 小时前
C# 基础——装箱和拆箱
java·开发语言·c#
b78gb2 小时前
电商秒杀系统设计 Java+MySQL实现高并发库存管理与订单处理
java·开发语言·mysql
Y42583 小时前
本地多语言切换具体操作代码
前端·javascript·vue.js
LXS_3574 小时前
Day 05 C++ 入门 之 指针
开发语言·c++·笔记·学习方法·改行学it
fruge4 小时前
React 2025 完全指南:核心原理、实战技巧与性能优化
javascript·react.js·性能优化
速易达网络5 小时前
Bootstrap 5 响应式网站首页模板
前端·bootstrap·html
etsuyou5 小时前
js前端this指向规则
开发语言·前端·javascript
lichong9515 小时前
Android studio 修改包名
android·java·前端·ide·android studio·大前端·大前端++
cai_huaer5 小时前
BugKu Web渗透之 cookiesWEB
前端·web安全