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

相关推荐
一颗花生米。2 小时前
深入理解JavaScript 的原型继承
java·开发语言·javascript·原型模式
问道飞鱼2 小时前
Java基础-单例模式的实现
java·开发语言·单例模式
学习使我快乐012 小时前
JS进阶 3——深入面向对象、原型
开发语言·前端·javascript
bobostudio19952 小时前
TypeScript 设计模式之【策略模式】
前端·javascript·设计模式·typescript·策略模式
通信仿真实验室3 小时前
(10)MATLAB莱斯(Rician)衰落信道仿真1
开发语言·matlab
勿语&3 小时前
Element-UI Plus 暗黑主题切换及自定义主题色
开发语言·javascript·ui
黄尚圈圈3 小时前
Vue 中引入 ECharts 的详细步骤与示例
前端·vue.js·echarts
浮华似水4 小时前
简洁之道 - React Hook Form
前端
正小安6 小时前
如何在微信小程序中实现分包加载和预下载
前端·微信小程序·小程序
吾爱星辰6 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin