hand
_1_11_106
4
返回栏目
0k
2k
1k
2k
1k
1k
1k
2k
2k
2k
1k
2k
1k
2k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
1k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
1k
2k
1k
1k
1k
1k
1k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
1k
1k
2k
1k
1k
2k
2k
1k
2k
1k
1k
2k
2k
2k
3k
3k
2k
3k
2k
3k
3k
3k
1k
2k
3k
2k
2k
3k
3k
2k
2k
6k
3k
2k
2k
5k
3k
4k
3k
3k
2k
4k
3k
3k
2k
3k
3k
1k
4k
4k
4k
2k
5k
3k
2k
3k
4k
3k
3k
4k
2k
3k
3k
4k
2k
2k
3k
4k
3k
3k
2k
5k
2k
3k
3k
3k
3k
2k
3k
3k
3k
2k
2k
2k
2k
3k
2k
2k
2k
3k
2k
2k
2k
2k
2k
2k
0.1k
0.2k
3k
2k
3k
2k
0.1k
2k
2k
4k
2k
2k
1k
2k
2k
3k
3k
3k
3k
2k
2k
3k
3k
3k
4k
3k
3k
4k
3k
2k
2k
3k
3k
3k
3k
3k
3k
2k
3k
3k
4k
4k
3k
3k
2k
2k
3k
2k
2k
1k
2k
3k
1k
2k
2k
2k
2k
2k
2k
2k
2k
2k
4k
2k
3k
2k
1k
2k
2k
2k
2k
2k
3k
2k
3k
1k
2k
2k
2k
0k
2k
2k
2k
2k
2k
2k
2k
3k
2k
2k
1k
1k
3k
2k
3k
1k
2k
1k
2k
2k
2k
2k
3k
1k
3k
2k
2k
2k
2k
2k
2k
1k
2k
2k
4k
3k
3k
2k
2k
2k
2k
2k
2k
4k
3k
3k
3k
2k
2k
2k
2k
2k
2k
3k
4k
返回前端 - Javascript栏目
作者:
贺及楼
成为作者
更新日期:2025-02-21 19:49:36
在前端开发中,事件绑定是一项非常重要的技术,它使得网页能够对用户的各种操作做出响应,从而实现交互性。DOM 事件规范经历了多个版本的发展,DOM3 级事件在之前的基础上新增了许多事件类型,为开发者提供了更丰富的交互可能性。本文将详细介绍 DOM3 级事件中新增的事件类型及其应用场景。
DOM3 级事件规范对事件进行了进一步的扩展和细化,新增了多种事件类型,涵盖了用户交互、设备输入、文档加载等多个方面。这些新增事件使得开发者能够更精准地捕捉和处理各种用户行为,提升用户体验。
keyup
、keydown
和 keypress
事件的增强keydown
事件在用户按下键盘按键时触发,keyup
事件在用户释放按键时触发,keypress
事件在用户按下并释放可打印字符键时触发。<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<input type="password" id="passwordInput">
<p id="message"></p>
<script>
const passwordInput = document.getElementById(‘passwordInput’);
const message = document.getElementById(‘message’);
passwordInput.addEventListener(‘keydown’, function (event) {
if (this.value.length >= 8) {
message.textContent = ‘密码长度符合要求’;
} else {
message.textContent = ‘密码长度至少为 8 位’;
}
});
</script>
</body>
</html>
### 2. 鼠标事件扩展
- **`mousewheel` 事件**
- `mousewheel` 事件在用户滚动鼠标滚轮时触发。在 DOM3 级事件中,对该事件的处理更加统一。
- **应用场景**:图片轮播中的滚动切换。当用户滚动鼠标滚轮时,切换图片。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
#imageContainer {
width: 300px;
height: 200px;
overflow: hidden;
}
#imageList {
display: flex;
width: 900px;
transition: transform 0.3s;
}
#imageList img {
width: 300px;
height: 200px;
}
</style>
</head>
<body>
<div id="imageContainer">
<div id="imageList">
<img src="image1.jpg" alt="Image 1">
<img src="image2.jpg" alt="Image 2">
<img src="image3.jpg" alt="Image 3">
</div>
</div>
<script>
const imageList = document.getElementById('imageList');
let currentIndex = 0;
imageList.addEventListener('mousewheel', function (event) {
if (event.deltaY > 0) {
if (currentIndex < 2) {
currentIndex++;
}
} else {
if (currentIndex > 0) {
currentIndex--;
}
}
this.style.transform = `translateX(-${currentIndex * 300}px)`;
});
</script>
</body>
</html>
textinput
事件textinput
事件在用户输入文本时触发,与 keypress
事件不同,它只在实际插入文本时触发,更适合处理文本输入场景。<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<textarea id="textArea"></textarea>
<p id="charCount">字符数: 0</p>
<script>
const textArea = document.getElementById(‘textArea’);
const charCount = document.getElementById(‘charCount’);
textArea.addEventListener(‘textinput’, function () {
charCount.textContent = 字符数: ${this.value.length}
;
});
</script>
</body>
</html>
### 4. 焦点事件扩展
- **`focusin` 和 `focusout` 事件**
- `focusin` 事件在元素获得焦点时触发,`focusout` 事件在元素失去焦点时触发。它们与 `focus` 和 `blur` 事件的区别在于,`focusin` 和 `focusout` 事件会冒泡。
- **应用场景**:表单验证。当用户离开某个输入框时,验证输入内容。
```html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
</head>
<body>
<input type="email" id="emailInput">
<p id="emailMessage"></p>
<script>
const emailInput = document.getElementById('emailInput');
const emailMessage = document.getElementById('emailMessage');
emailInput.addEventListener('focusout', function () {
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(this.value)) {
emailMessage.textContent = '请输入有效的邮箱地址';
} else {
emailMessage.textContent = '';
}
});
</script>
</body>
</html>
事件类型 | 触发时机 | 应用场景 |
---|---|---|
keyup 、keydown 、keypress |
按键释放、按键按下、按下并释放可打印字符键 | 实时验证用户输入 |
mousewheel |
滚动鼠标滚轮 | 图片轮播滚动切换 |
textinput |
实际插入文本时 | 实时统计输入字符数 |
focusin 、focusout |
元素获得焦点、元素失去焦点 | 表单验证 |
DOM3 级事件中新增的事件类型为前端开发者提供了更强大的交互能力。通过合理运用这些事件,我们可以实现更加丰富、流畅的用户体验。在实际开发中,需要根据具体的需求选择合适的事件类型,并结合其他前端技术进行开发。
前端 - Javascript
整章节共299节
快分享给你的小伙伴吧 ~