客户端Web应用是一种GUI应用,也就是说这种应用会对不同类型的事件作响应,如鼠标移动、单击和键盘按压等。因此在页面构建阶段执行的JavaScript代码,除了会影响全局应用状态和修改DOM外,还会注册事件监听器(或处理器)。这类监听器会在事件发生时,由浏览器调用执行。
浏览器执行环节的核心思想基于:同一时刻只能执行一个代码片段,即所谓的单线程执行模型
事件是异步的
事件处理器:当某个特定事件发生后我们希望执行的函数。为了达到这个目标我们必须告知浏览器需要处理哪个事件。这个过程叫做注册事件处理器。在客户端Web应用中,有两种方式注册事件:
- 通过把函数赋给某个特殊属性
- 通过使用内置addEventListener方法
例如:编写如下代码,讲一个函数赋值给window对象上的某个特定事件onload:
window.onload = function(){};
通过这种方式,事件处理器就会注册到load事件上(当DOM已经就绪并全部构建完成,就会触发这个事件)
如果我们还想为在文档中body元素的单击事件注册处理器,我们可输入以下代码:
document.body.onclick = function (){};
把函数赋值给特殊属性是一种简单而直接的注册事件处理器方式(但还是少用)
处理事件:
事件处理背后的主要思想是:当事件发生时,浏览器调用相应的事件处理器