JavaScript常见事件和修饰符

JavaScript作为Web开发的重要语言,处理事件的机制是其中最常见且最重要的部分之一。通过事件,我们可以让用户与页面进行交互,创造出更丰富、更动态的用户体验。在JavaScript中,事件不仅有种类繁多,还可以通过修饰符来进一步控制它们的行为。

1. 常见的JavaScript事件

JavaScript中的事件主要是指浏览器对用户行为的响应。常见的事件包括但不限于以下几类:

1.1 鼠标事件
  • click:鼠标点击元素时触发。
  • dblclick:鼠标双击元素时触发。
  • mousedown:鼠标按下时触发。
  • mouseup:鼠标释放时触发。
  • mousemove:鼠标在元素上移动时触发。
  • mouseover:鼠标指针进入元素区域时触发。
  • mouseout:鼠标指针离开元素区域时触发。
  • mouseenter :鼠标指针进入元素时触发,类似于 mouseover,但不会冒泡。
  • mouseleave :鼠标指针离开元素时触发,类似于 mouseout,但不会冒泡。
1.2 键盘事件
  • keydown:当按下键盘上的任意键时触发。
  • keypress:按下并保持按键时触发,已被废弃,不推荐使用。
  • keyup:当键盘上的键被释放时触发。
1.3 表单事件
  • submit:当表单提交时触发。
  • reset:当表单被重置时触发。
  • focus:当元素获得焦点时触发。
  • blur:当元素失去焦点时触发。
  • change:当表单元素的值改变时触发。
  • input:当输入框内容改变时触发。
1.4 文档和窗口事件
  • load:当文档或图像等资源加载完成时触发。
  • DOMContentLoaded:当DOM树构建完成时触发,但不等图片、样式表等资源加载完成。
  • resize:当浏览器窗口的大小改变时触发。
  • scroll:当元素或页面滚动时触发。
1.5 触摸事件(移动端)
  • touchstart:触摸屏幕时触发。
  • touchmove:触摸点在屏幕上移动时触发。
  • touchend:触摸点从屏幕上离开时触发。
  • touchcancel:当触摸事件被中断时触发(例如,系统弹出通知等)。

2. 事件修饰符

事件修饰符用于更精细地控制事件的行为。它们主要用于事件监听器中,帮助开发者轻松应对不同的需求。

2.1 常见事件修饰符
  • stopPropagation():阻止事件的进一步传播。通常在事件冒泡阶段使用,防止事件从子元素冒泡到父元素。

    复制代码
    element.addEventListener('click', function(event) {
      event.stopPropagation();
      console.log('Click event was stopped from bubbling!');
    });
  • preventDefault() :阻止浏览器的默认行为。例如,点击超链接时默认跳转,preventDefault() 可以阻止这个行为。

    复制代码
    element.addEventListener('submit', function(event) { 
        event.preventDefault(); 
        console.log('Form submission was prevented!'); 
    });
  • stopImmediatePropagation() :类似于 stopPropagation(),但是它还会阻止其他事件监听器的执行。即使该元素上有多个事件监听器,调用此方法后,其他监听器也不会执行。

    复制代码
    element.addEventListener('click', function(event) { 
        event.stopImmediatePropagation(); 
        console.log('No other click event listeners will be called.'); 
    });
2.2 常见事件修饰符(通过键盘)

在处理键盘事件时,可以结合 keyCodewhich 等属性来检测按下的特定键。同时,修饰符键如 Ctrl, Alt, Shift 等也可以用于精确控制键盘事件的行为。

  • Ctrl键event.ctrlKey 返回 truefalse,指示是否按下了 Ctrl 键。

  • Shift键event.shiftKey 返回 truefalse,指示是否按下了 Shift 键。

  • Alt键event.altKey 返回 truefalse,指示是否按下了 Alt 键。

    element.addEventListener('keydown', function(event) {
    if (event.ctrlKey) {
    console.log('Ctrl key was pressed!');
    }
    if (event.shiftKey) {
    console.log('Shift key was pressed!');
    }
    });

2.3 指定事件修饰符(例如once
  • once:事件监听器触发一次后,会自动移除。

    复制代码
    element.addEventListener('click', function() {
      console.log('This will only run once.');
    }, { once: true });

3. 事件委托

事件委托是将事件处理程序绑定到父元素而不是子元素上的一种技术。这允许你在父元素中处理多个子元素的事件,而不是为每个子元素单独绑定事件处理程序。它的核心思想是利用事件冒泡机制。

复制代码
document.getElementById('parent').addEventListener('click', function(event) {
  if (event.target && event.target.matches('button.className')) {
    console.log('Button clicked!');
  }
});

4. 总结

在Web开发中,事件是实现用户交互和页面动态效果的核心。通过合理使用常见事件和修饰符,可以帮助我们轻松地控制事件的行为,使得Web应用更加灵活且用户友好。希望本文能帮助你更好地理解和使用JavaScript中的事件处理机制。

相关推荐
C++ 老炮儿的技术栈3 小时前
UDP 与 TCP 的区别是什么?
开发语言·c++·windows·算法·visual studio
wgslucky3 小时前
Dubbo报错:module java.base does not “opens java.lang“ to unnamed module
java·开发语言·dubbo
whyeekkk3 小时前
python打卡第48天
开发语言·python
小约翰仓鼠4 小时前
vue3子组件获取并修改父组件的值
前端·javascript·vue.js
DougLiang4 小时前
关于easyexcel动态下拉选问题处理
java·开发语言
烛阴4 小时前
bignumber.js深度解析:驾驭任意精度计算的终极武器
前端·javascript·后端
全职计算机毕业设计5 小时前
基于Java Web的校园失物招领平台设计与实现
java·开发语言·前端
你的人类朋友5 小时前
✍️Node.js CMS框架概述:Directus与Strapi详解
javascript·后端·node.js
5:005 小时前
云备份项目
linux·开发语言·c++
啊~哈5 小时前
vue3+elementplus表格表头加图标及文字提示
前端·javascript·vue.js