JavaScript

JavaScript 知识量:26 - 101 - 483

16.2 事件处理程序><

HTML事件处理程序- 16.2.1 -

HTML事件处理程序是用于响应特定用户交互的JavaScript函数。例如,当用户点击一个按钮或提交一个表单时,可能会触发一个事件,而事件处理程序则是定义在HTML元素上,用于响应这些事件的JavaScript函数。

在HTML中,可以使用以下属性来指定事件处理程序:

  • onclick:当用户点击元素时触发。

  • onsubmit:当用户提交表单时触发。

  • onblur:当用户离开元素(例如,焦点离开输入字段)时触发。

  • onfocus:当用户将焦点移动到元素上时触发。

  • onload:当页面或图像完全加载时触发。

  • onunload:当页面或图像完全卸载时触发。

  • onchange:当元素的值发生变化时触发。

  • onreset:当表单重置时触发。

  • onselect:当用户选择文本框中的文本时触发。

  • onmouseover:当用户将鼠标指针移动到元素上时触发。

  • onmousedown:当用户按下鼠标按钮时触发。

  • onmouseup:当用户释放鼠标按钮时触发。

  • onmouseout:当用户将鼠标指针移出元素时触发。

  • onkeypress:当用户按下并释放键盘上的键时触发。

在HTML中,事件处理程序通常被绑定到元素上,以便在特定事件发生时执行相应的函数。这可以通过使用addEventListener()方法来实现,该方法接受两个参数:要绑定事件的元素和事件处理程序函数。例如,以下代码演示了如何将一个click事件处理程序绑定到按钮元素上:

<button id="myButton">Click me!</button>  
  
<script>  
  // 获取按钮元素  
  var button = document.getElementById("myButton");  
  
  // 定义事件处理程序函数  
  function handleClick() {  
    alert("Button clicked!");  
  }  
  
  // 绑定事件处理程序到按钮元素上  
  button.addEventListener("click", handleClick);  
</script>

在这个例子中,当用户点击按钮时,会弹出一个警告框显示“Button clicked!”。通过使用addEventListener()方法,可以轻松地将事件处理程序绑定到HTML元素上,并在事件发生时执行相应的函数。

DOM0事件处理程序- 16.2.2 -

DOM0事件处理程序是直接在HTML元素内部使用事件属性来绑定事件处理程序的简单方式。它不需要使用JavaScript代码来绑定事件处理程序,而是直接在HTML元素中使用事件属性来指定处理程序。

例如,以下代码演示了如何使用DOM0事件处理程序来处理一个click事件:

<button onclick="handleClick()">Click me!</button>  
  
<script>  
  // 定义事件处理程序函数  
  function handleClick() {  
    alert("Button clicked!");  
  }  
</script>

在这个例子中,在按钮元素中使用了onclick属性来指定事件处理程序函数。当用户点击按钮时,会弹出一个警告框显示“Button clicked!”。虽然DOM0事件处理程序比较简单,但是它不支持事件捕获和事件委托,同时也不利于代码的维护和可扩展性。因此,现代的JavaScript开发通常推荐使用addEventListener()方法来绑定事件处理程序。

DOM2事件处理程序- 16.2.3 -

DOM2事件处理程序是使用DOM2级事件规范定义的方法来处理事件。DOM2级事件规范引入了两个方法:addEventListener()和removeEventListener(),用于处理指定和删除事件处理程序的操作。

addEventListener()方法接受三个参数:要处理的事件名、作为事件处理程序的函数和一个布尔值。这个布尔值参数如果是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。通过addEventListener()添加的事件处理程序只能使用removeEventListener()来移除,移除时传入的参数与添加处理程序时使用的参数相同。

以下是一个使用DOM2事件处理程序的示例:

<button id="myButton">Click me!</button>  
  
<script>  
  // 获取按钮元素  
  var button = document.getElementById("myButton");  
  
  // 定义事件处理程序函数  
  function handleClick(event) {  
    alert("Button clicked!");  
    console.log(event.target); // 输出被点击的元素  
  }  
  
  // 绑定事件处理程序到按钮元素上  
  button.addEventListener("click", handleClick, false);  
</script>

在这个例子中,使用addEventListener()方法将一个click事件处理程序绑定到按钮元素上。当用户点击按钮时,会弹出一个警告框显示“Button clicked!”并在控制台输出被点击的元素。注意:传入了三个参数给addEventListener()方法:要处理的事件名("click")、作为事件处理程序的函数(handleClick)和布尔值(false,表示在冒泡阶段调用事件处理程序)。

IE事件处理程序- 16.2.4 -

IE事件处理程序主要是通过attachEvent()和detachEvent()方法来实现的。

attachEvent()方法用于向指定元素添加事件句柄,语法为:element.attachEvent(event,function),其中event为事件名,必须加“on”前缀,function为指定事件触发时执行的函数。

detachEvent()方法则用于移除通过attachEvent()添加的事件句柄,语法为:element.detachEvent(event,function),其中event为要移除的事件名称,function为指定要移除的函数。