JavaScript常用事件大全:从基础到实战应用

360影视 日韩动漫 2025-09-08 17:02 1

摘要:// 实现简单绘图板constcanvas = document.getElementById('drawing-board');canvas.addEventListener('mousedown', startDrawing);canvas.addEven

JavaScript事件是网页交互的核心。本文将全面介绍常用事件类型及其实际应用场景,帮助开发者快速掌握事件处理技巧。

一、 鼠标 事件(8种核心操作)

事件名称

触发时机

使用示例

click

鼠标单击元素时触发

按钮操作

dblclick

鼠标双击元素时触发

文件打开

mousedown

鼠标按键按下瞬间触发

拖拽开始

mouseup

松开鼠标按键时触发

拖拽结束

mouseover

鼠标移入元素区域时触发

菜单展开

mousemove

鼠标在元素内移动时持续触发

绘图工具

mouseout

鼠标移出元素区域时触发

提示隐藏

mouseenter

鼠标进入元素时触发(不冒泡)

动画开始

实际应用技巧:

// 实现简单绘图板
constcanvas = document.getElementById('drawing-board');
canvas.addEventListener('mousedown', startDrawing);
canvas.addEventListener('mousemove', draw);
canvas.addEventListener('mouseup', stopDrawing);二、键盘事件(3种输入状态)

事件名称

触发时机

keydown

键盘按键按下瞬间触发

keyup

松开键盘按键时触发

keypress

按住按键持续触发(已废弃)

注意: 现代开发建议优先使用 keydown + keyup 组合

三、页面生命周期事件(6个关键节点) window.addEventListener('load', => {
// 页面完全加载后执行(包括图片)
});

window.addEventListener('domContentLoaded', => {
// DOM解析完成时执行(无需等待资源)
});

window.addEventListener('beforeunload', (e) => {
// 页面关闭前提醒用户保存数据
e.preventDefault;
return(e.returnValue = '确定离开吗?');
});

window.addEventListener('resize', => {
// 窗口大小变化时适配布局
});

window.addEventListener('scroll', => {
// 滚动时实现吸顶效果
});四、表单事件(5种交互状态)

focus:输入框获得焦点(如显示历史记录)

blur:输入框失去焦点(如验证格式)

change:值改变且失去焦点后(适合下拉菜单)

input:在实时变化时触发(推荐替代keypress)

submit:表单提交前验证(必须阻止默认行为)

验证代码示例:

document.getElementById('email').addEventListener('blur', function {
if(!this.value.includes('@')) {
this.style.borderColor = 'red';
}
});五、现代事件类型(必学8种)

touchstart/touchend:移动端触摸事件

transitionend:css动画结束时触发

visibilitychange:标签页切换时处理

contextmenu:右键菜单自定义(需阻止默认)

paste:粘贴板数据处理

fullscreenchange:全屏模式切换

online/offline:网络状态检测

六、高级事件处理技巧

事件委托: 动态元素处理终极方案

// 统一处理表格按钮
document.querySelector('#>).addEventListener('click', e => {
if(e.target.classList.contains('delete-btn')) {
deleteRecord(e.target.dataset.id);
}
});

性能优化: 滚动事件

// 滚动事件节流处理
let isScrolling;
window.addEventListener('scroll', => {
clearTimeout(isScrolling);
isScrolling = setTimeout( => {
// 实际执行的操作
},100);
});

自定义事件: 实现组件通信

// 创建事件
constrefreshEvent =newEvent('dataRefresh');

// 触发事件
document.dispatchEvent(refreshEvent);

// 监听事件
document.addEventListener('dataRefresh', loadData);实战建议(提升代码质量)

根据MDN官方数据,现代浏览器对标准事件的兼容性已达98%以上(IE11除外),开发者可放心使用。

掌握这些事件机制,能显著提升用户交互体验。建议在实际项目中多练习事件委托和自定义事件的使用,这是构建复杂应用的关键技术。

学习更多技能

来源:寂寞的咖啡

相关推荐