JavaScript事件处理详解:三种指定方法与常用事件列表

作者:窗边听雨

时间:2026-10-24

浏览:441

本文深入解析JavaScript事件处理机制,详细介绍在HTML标记、Script标签及JS代码中指定事件处理程序的三种方法。重点讲解onload、onclick、onerror等常用事件的触发条件与应用场景,包括表单验证、错误忽略及链接控制等实际案例,帮助开发者灵活掌握事件响应逻辑。

文章目录
事件处理概述

事件处理机制概述

事件处理是面向对象编程的核心环节,缺乏它程序将失去灵活性。其基本流程为:事件发生 -> 触发处理程序 -> 处理程序执行响应。要使处理程序生效,必须预先将事件与对应的处理逻辑绑定,否则流程无法启动。虽然处理程序可以是任意JavaScript语句,但通常推荐使用自定义函数(function)来封装逻辑。


指定事件处理程序的三种方法

指定事件处理程序主要有三种方式:


方法一:直接在HTML标记中指定。

这是最常用的方法,具体实现如下:


代码如下:

<标记 ... ... 事件="事件处理程序" [事件="事件处理程序" ...]>

示例如下:


代码如下:

<body ... onload="alert('网页读取完成,请慢慢欣赏!')" onunload="alert('再见!')">

通过上述<body>标记定义,文档加载完成后会弹出提示“网页读取完成,请慢慢欣赏”;当用户离开页面(如关闭窗口或跳转)时,则会弹出“再见”提示。


方法二:编写针对特定对象和事件的JavaScript。

这种方法使用较少,但在特定场景下非常有效。具体做法是:


代码如下:

<script language="JavaScript" for="对象" event="事件">
... 
(事件处理程序代码)
... 
</script>

示例代码如下:

<script language="JavaScript" for="window" event="onload">
alert('网页读取完成,请慢慢欣赏!');
</script>

方法三:在JavaScript代码中说明。

第三种方法:


<事件主体 - 对象>.<事件> = <事件处理程序>;


使用此方法时需注意,“事件处理程序”必须是可执行的代码引用,而非字符串。若处理程序为自定义函数且无需传递参数,切勿添加括号“()”。


function ignoreError() {


return true;


}

window.onerror = ignoreError; // 没有使用“()”


该示例将ignoreError()函数绑定为window对象的onerror事件处理程序,从而忽略该窗口下的所有脚本错误(但引用非法location对象产生的“没有权限”错误无法被忽略)。


常用事件详解

常见事件详解


onblur 事件:当窗口失去焦点时触发。适用于:window 对象。


onchange 事件:在文本输入内容改变且焦点移出输入框后触发。主要用于实时验证输入有效性或即时更新文档内容。适用于:Password 对象;Select 对象;Text 对象;Textarea 对象。


onclick 事件:当用户完成“鼠标按下-移动-释放”的完整点击过程时触发。普通按钮(Button)若无onclick处理程序则无法响应用户交互,因此至关重要。通过onclick修改表单的action、target、encoding或method属性后调用submit(),可模拟其他提交按钮。在Link对象的onclick中返回false(return false)可阻止浏览器跳转,例如:<a href="http://www.a.com" onclick="return false">Go!</a>,除非用户禁用JavaScript,否则无法访问目标链接。适用于:Button 对象;Checkbox 对象;Image 对象;Link 对象;Radio 对象;Reset 对象;Submit 对象。


onerror 事件:在发生错误时触发,通常称为“错误处理程序”(Error Handler)。前文已介绍,若需忽略所有错误,可使用:


代码如下:

function ignoreError() {
return true;
} 
window.onerror = ignoreError;

适用于:window 对象。


onfocus 事件:当窗口获得焦点时触发。适用于:window 对象。


onload 事件:在文档及所有关联资源(HTML、图片、插件、控件、小程序等)完全下载完毕后触发。虽然它是window对象的事件,但在HTML中通常定义在<body>标记内。适用于:window 对象。


onmousedown 事件:当用户将鼠标置于对象上并按下鼠标键时触发。参考onmouseup事件。适用于:Button 对象;Link 对象。


onmouseout 事件:当鼠标离开对象时触发。参考onmouseover事件。适用于:Link 对象。


onmouseover 事件:当鼠标进入对象区域时触发。结合onmouseout及图片预加载技术,可实现鼠标悬停更换图像的效果。此外,通过修改状态栏文本(window.status),可在链接悬停时显示自定义信息而非URL。实现方式如下:


<a href="..." onmouseover="window.status='Click Me Please!'; return true;" onmouseout="window.status=''; return true;">


适用于:Link 对象。


onmouseup 事件:当用户按下鼠标键后,在按下位置释放鼠标键时触发。若释放鼠标时指针不在按下时的对象上,则不触发此事件。适用于:Button 对象;Link 对象。


onreset 事件:在表单“重置”按钮被单击(按下并释放)时触发。在事件处理程序中返回false(return false)可阻止表单重置。适用于:Form 对象。


onresize 事件:当窗口大小被调整时触发。适用于:window 对象。


onsubmit 事件:在表单“提交”按钮被单击(按下并释放)时触发。可用于验证表单有效性。在事件处理程序中返回false(return false)可阻止表单提交。适用于:Form 对象。


onunload 事件:当用户离开文档(关闭窗口或跳转至其他页面)时触发。与onload类似,需在HTML的<body>标记中定义。部分Web管理员利用此事件弹出调查表或广告窗口,但这种“onunload="open..."”的做法常因弹出过多窗口导致资源浪费,体验不佳。建议在页面内直接告知用户信息。适用于:window 对象。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章