事件介绍 - 学习 Web 开发

事件介绍 - 学习 Web 开发

事件介绍 上一页 概述:创建 JavaScript 代码块 下一页

事件是你正在编程的系统中发生的事情,系统会告诉你有关这些事件的信息,以便你的代码能够对它们做出反应。

例如:如果用户在网页上单击一个按钮,你可能想通过显示一个信息框来响应这个动作。在这篇文章中,我们将讨论一些关于事件的重要概念,并且观察它们在浏览器上如何运行。这篇文章不会面面俱到,仅聚焦于你现阶段需要掌握的知识。

前提:

基本的计算机知识,对 HTML 和 CSS 的基本了解,学习了 JavaScript 第一步。

目标:

了解事件的基本理论,它们怎么在浏览器上运行的,以及在不同的编程环境下事件有何不同。

什么是事件?事件是发生在你正在编程的系统中的事情——当事件发生时,系统产生(或“触发”)某种信号,并提供一种机制,当事件发生时,可以自动采取某种行动(即运行一些代码)。事件是在浏览器窗口内触发的,并倾向于附加到驻留在其中的特定项目。这可能是一个单一的元素,一组元素,当前标签中加载的 HTML 文档,或整个浏览器窗口。有许多不同类型的事件可以发生。

例如:

用户选择、点击或将光标悬停在某一元素上。

用户在键盘中按下某个按键。

用户调整浏览器窗口的大小或者关闭浏览器窗口。

网页结束加载。

表单提交。

视频播放、暂停或结束。

发生错误。

你可以从这里(以及从 MDN 事件参考文档)中看出,有相当多的事件可以被触发。

为了对一个事件做出反应,你要给它附加一个事件处理器。这是一个代码块(通常是你作为程序员创建的一个 JavaScript 函数),在事件发生时运行。当这样一个代码块被定义为响应一个事件而运行时,我们说我们在注册一个事件处理器。注意,事件处理器有时候被叫做事件监听器——从我们的用意来看这两个名字是相同的,尽管严格地来说这块代码既监听也处理事件。监听器留意事件是否发生,处理器对事件发生做出回应。

备注:

web 事件不是 JavaScript 语言的核心——它们被定义成内置于浏览器的 API。

示例:处理点击事件在这个示例中,我们在页面中有一个

button {

margin: 10px;

}

然后我们有一些 JavaScript。我们将在下一节中更详细地讨论这个问题,但现在我们可以说:它为按钮的 "click" 事件添加了一个事件处理器,该处理器对该事件的反应是将页面背景设置为随机颜色:

jsconst btn = document.querySelector("button");

function random(number) {

return Math.floor(Math.random() * (number + 1));

}

btn.addEventListener("click", () => {

const rndCol = `rgb(${random(255)}, ${random(255)}, ${random(255)})`;

document.body.style.backgroundColor = rndCol;

});

示例输出如下,试试点击按钮吧:

使用 addEventListener()正如我们在上一个示例中所看到的,能够触发事件的对象有一个 addEventListener() 方法,这就是推荐的添加事件处理器的机制。

让我们仔细看一下上一个示例的代码:

jsconst btn = document.querySelector("button");

function random(number) {

return Math.floor(Math.random() * (number + 1));

}

btn.addEventListener("click", () => {

const rndCol = `rgb(${random(255)}, ${random(255)}, ${random(255)})`;

document.body.style.backgroundColor = rndCol;

});

HTML

jsfunction bgChange() {

const rndCol = `rgb(${random(255)}, ${random(255)}, ${random(255)})`;

document.body.style.backgroundColor = rndCol;

}

在 web 上发现的最早的注册事件处理器的方法涉及到事件处理器 HTML 属性(或内联事件处理器),如示例所示。属性值就是你想在事件发生时运行的 JavaScript 代码。上面的示例调用了同一页面上