<脚本> le" />

第133篇:事件处理与常用事件

事件处理,常用,事件 · 浏览次数 : 14

小编点评

**DOM0 事件处理程序** * 使用 DOM 元素的 `onclick` 属性设置事件处理程序。 * 事件处理程序的回调函数会在元素被创建或初始化时被执行。 **DOM2 事件处理程序** * 使用 `addEventListener()` 方法添加事件处理程序。 * 支持事件捕获和冒泡阶段,可以更精细地控制事件的传递和处理顺序。 * 支持多个事件处理程序,并支持事件对象的属性和方法。 **事件类型常用事件类型** | 事件类型 | 事件 | |---|---| | UIEvent | load | | FocusEvent | blur | | MouseEvent | click, mousedown, mouseenter, mouseleave | | KeyboardEvent | keydown, keypress, keyup |

正文

好家伙,本篇为《JS高级程序设计》第十七章"事件"学习笔记

 

1.DOM0事件处理程序

 在 JavaScript 中指定事件处理程序的传统方式是把一个函数赋值给(DOM 元素的)一个事件处理程 序属性。

 添加点击事件:

<正文>
    <div id = " div_1 " >
    </div>
    <脚本> 
        let button_1 = document.createElement( " button " )
        按钮_1。id = " button_1 " 
        let div_1 = document.getElementById( " div_1 " )
        div_1.appendChild(button_1)
        button_1.onclick =函数() {
            console.log( this.id )
        }
    </脚本>
</body>

 

 

 

 

移除事件

button_1.onclick = null;

 

 

 

2.DOM2事件处理程序

DOM2 Events 为事件处理程序的赋值方法:addEventListener()

这个方法暴露在所有 DOM 节点上,它们接收 3 个参数:

(1)事件名、

(2)事件处理函数

(3)一个布尔值:true 表示在捕获阶段调用事件处理程序,

        false(默认值)表示在冒泡阶段调用事 件处理程序

 

添加事件:

button_1.addEventListener("click", () => {
    console.log("成功添加");
}, false);

button_1.addEventListener("click", () => {
    console.log(this.id);
}, false);

 

使用DOM2的优势:

  1. 支持添加多个事件处理程序:DOM2事件模型可以为同一元素的同一事件添加多个事件处理程序,不会覆盖原有的事件处理程序,而DOM0事件模型只支持为同一元素的同一事件添加一个事件处理程序。

  2. 支持事件捕获和事件冒泡:DOM2事件模型支持事件的捕获和冒泡阶段,可以更精细地控制事件的传递和处理顺序,而DOM0事件模型只支持事件冒泡。

  3. 支持更多的事件类型:DOM2事件模型支持更多的事件类型,包括鼠标滚轮事件、键盘按键事件、文本输入事件等,而DOM0事件模型只支持少数的事件类型。

  4. 支持事件对象的属性和方法:DOM2事件模型的事件对象具有更多的属性和方法,可以更方便地获取事件的相关信息,而DOM0事件模型的事件对象比较简单,只有少数的属性和方法。

总之,DOM2事件模型相对于DOM0事件模型更加灵活、功能更加强大,可以满足更多的需求,是现代Web开发中不可或缺的一部分。

 

移除事件处理程序

 

button_1.addEventListener("click", () => {
    console.log(this.id);
}, false);

button_1.removeEventListener("click", () => {
    console.log(this.id);
}, false);

 

注意,此处事件移除无效,匿名函数是无法取消的

 

let afterclick = function(){
    console.log(this.id)
} 

button_1.addEventListener("click", afterclick(), false);

button_1.removeEventListener("click", afterclick(), false);

 

3.事件类型

常用事件类型如下:

 

3.1.用户界面事件(UIEvent):涉及与 BOM 交互的通用浏览器事件。

常用事件:

(1) load:在 window 上当页面加载完成后触发,在窗套()上当所有窗格() 都加载完成后触发,在元素上当图片加载完成后触发,在元素上当相应对象加 载完成后触发。

(2) resize:在 window 或窗格上当窗口或窗格被缩放时触发。

(3) scroll:当用户滚动包含滚动条的元素时在元素上触发。元素包含已加载页面的滚动条。 大多数 HTML 事件与 window 对象和表单控件有关。

 

3.2.焦点事件(FocusEvent):在元素获得和失去焦点时触发。

常用:

(1) blur:当元素失去焦点时触发。这个事件不冒泡,所有浏览器都支持。

(2) focus:当元素获得焦点时触发。这个事件不冒泡,所有浏览器都支持。

(3) focusin:当元素获得焦点时触发。这个事件是 focus 的冒泡版。

(4) focusout:当元素失去焦点时触发。这个事件是 blur 的通用版。

 

3.3.鼠标事件(MouseEvent):使用鼠标在页面上执行某些操作时触发。

(1)click:在用户单击鼠标主键(通常是左键)或按键盘回车键时触发。这主要是基于无障碍的考 虑,让键盘和鼠标都可以触发 onclick 事件处理程序。

(2)mousedown:在用户按下任意鼠标键时触发。这个事件不能通过键盘触发。

(3)mouseenter:在用户把鼠标光标从元素外部移到元素内部时触发。这个事件不冒泡,也不会在 光标经过后代元素时触发。mouseenter 事件不是在 DOM2 Events 中定义的,而是 DOM3 Events 中新增的事件。

(4)mouseleave:在用户把鼠标光标从元素内部移到元素外部时触发。这个事件不冒泡,也不会在 光标经过后代元素时触发。mouseleave 事件不是在 DOM2 Events 中定义的,而是 DOM3 Events 中新增的事件。

(5)mousemove:在鼠标光标在元素上移动时反复触发。这个事件不能通过键盘触发。

 

3.4.键盘与输入事件(KeyboardEvent):使用键盘在页面上执行某些操作时触发。

(1) keydown,用户按下键盘上某个键时触发,而且持续按住会重复触发。

(2) keypress,用户按下键盘上某个键并产生字符时触发,而且持续按住会重复触发。Esc 键也会 触发这个事件。DOM3 Events 废弃了 keypress 事件,而推荐 textInput 事件。

(3) keyup,用户释放键盘上某个键时触发。

 

与第133篇:事件处理与常用事件相似的内容:

第133篇:事件处理与常用事件

好家伙,本篇为《JS高级程序设计》第十七章"事件"学习笔记 1.DOM0事件处理程序 在 JavaScript 中指定事件处理程序的传统方式是把一个函数赋值给(DOM 元素的)一个事件处理程 序属性。 添加点击事件: <正文> <脚本> le

《HelloTester》第4期

1.前言 终于到了谈面试的部分了! 我在这也说明一下,有同学说之前简历篇的时候一直在说项目的介绍,而面试官真正关心的是技术啊?我在这做个解释,因为我写的这些文章主要针对的是软件测试的同学,所以其他职位的请根据自己的情况来改,比如你是面的前端或者java等,那当然要突出你在编程中的表现了! 首先来说,

【译】Apache Kafka 快速入门

编译自官方文档。 第 1 步:获取 Kafka 下载最新版本(当前为 v3.3.1)的 Kafka 并解压: $ tar -xzf kafka_2.13-3.3.1.tgz $ cd kafka_2.13-3.3.1 第 2 步:启动 Kafka 环境 注意:本地环境必须安装了 Java 8+。 A

第一百零五篇:变量的原始值和引用值

好家伙,JS基础接着学, 本篇内容为《JS高级程序设计》第四章学习笔记 1.原始值和引用值 ECMAScript变量可以包含两种不同类型的数据:原始值和引用值。原始值(primitive value)就是最简单的数据,引用值(reference value)则是由多个值构成的对象。 在把一个值赋给变

第一百零六篇:变量的不同声明(var,let和const的不同)

JS关于变量的声明,变量提升,暂时性死区

第一百零七篇:基本数据类型(undefined,null,boolean类型)

好家伙, 本篇内容为《JS高级程序设计》第三章学习笔记 1.数据类型 ECMAScript有6种简单数据类型(称为原始类型): Undefined, Null, Boolean, Number, String和Symbol。 Symbol (符号)是ECMAScript6新增的。还有一种复杂数据类型

第一百零八篇:最常用的基本数据类型(Number类型)

最常用的基本数据类型(Number类型)

第一百一十篇:内存泄漏和垃圾回收(JS)

好家伙,本篇内容为《JS高级程序设计》第四章的学习笔记 1.内存泄露 1.1.什么是内存泄漏? 内存泄漏(Memory Leak)是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 内存泄漏缺陷具有隐蔽性、积累性的特征,比其

第一百一十一篇:基本引用类型Date

好家伙,本篇为《JS高级程序设计》第五章的学习笔记 1.基本引用类型 引用值(或者对象)是某个特定引用类型的实例,在ECMAScript中,引用类型是把数据和功能组织到一起的结构,(像极了“类”) 经常被人错误的称作“类”。 虽然从技术上讲JavaScript是一门面向对象语言,但是ECMAScri

第一百一十二篇: JS数组Array(一)数组基本用法

好家伙, 1.数组 Array应该就是ECMAScript中最常用的类型了。ECMAScript数组跟其他编程语言的数组有很大区别。 跟其他语言中的数组一样,ECMAScript 数组也是一组有序的数据, 但跟其他语言不同的是,数组中每个槽位可以存储任意类型的数据。 这意味着可以创建一个数组,它的第