事件介绍

事件介绍

什么是事件?

事件是发生在你正在编程的系统中的事情——当事件发生时,系统产生(或“触发”)某种信号,并提供一种机制,当事件发生时,可以自动采取某种行动(即运行一些代码)。事件是在浏览器窗口内触发的,并倾向于附加到驻留在其中的特定项目。这可能是一个单一的元素,一组元素,当前标签中加载的 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 代码。上面的示例调用了同一页面上