2019-11-14 21:11:14 +08:00
|
|
|
|
|
|
|
|
|
## 鼠标的拖拽事件
|
|
|
|
|
|
|
|
|
|
拖拽的流程:
|
|
|
|
|
|
|
|
|
|
(1)`onmousedown`:当鼠标在被拖拽元素上按下时,开始拖拽;
|
|
|
|
|
|
|
|
|
|
(2)`onmousemove`:当鼠标移动时被拖拽元素跟随鼠标移动;
|
|
|
|
|
|
|
|
|
|
(3)`onmouseup`:当鼠标松开时,被拖拽元素固定在当前位置。
|
|
|
|
|
|
|
|
|
|
## 鼠标的滚轮事件
|
|
|
|
|
|
|
|
|
|
`onmousewheel`:鼠标滚轮滚动的事件,会在滚轮滚动时触发。但是火狐不支持该属性。
|
|
|
|
|
|
|
|
|
|
`DOMMouseScroll`:在火狐中需要使用 DOMMouseScroll 来绑定滚动事件。注意该事件需要通过addEventListener()函数来绑定。
|
|
|
|
|
|
|
|
|
|
## 键盘事件
|
|
|
|
|
|
|
|
|
|
### 事件名
|
|
|
|
|
|
|
|
|
|
`onkeydown`:按键被按下。
|
|
|
|
|
|
|
|
|
|
`onkeyup`:按键被松开。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**注意**:
|
|
|
|
|
|
|
|
|
|
- 如果一直按着某一个按键不松手,那么,`onkeydown`事件会一直触发。此时,松开键盘,`onkeyup`事件会执行一次。
|
|
|
|
|
|
|
|
|
|
- 当`onkeydown`连续触发时,第一次和第二次之间会间隔稍微长一点,后续的间隔会非常快。这种设计是为了防止误操作的发生。
|
|
|
|
|
|
|
|
|
|
键盘事件一般都会绑定给一些可以获取到焦点的对象或者是document。代码举例:
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<body>
|
|
|
|
|
<script>
|
|
|
|
|
document.onkeydown = function(event) {
|
|
|
|
|
event = event || window.event;
|
|
|
|
|
console.log('qianguyihao 键盘按下了');
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
document.onkeyup = function() {
|
|
|
|
|
console.log('qianguyihao 键盘松开了');
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<input type="text" />
|
|
|
|
|
</body>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 判断哪个键盘被按下
|
|
|
|
|
|
|
|
|
|
可以通过`event`事件对象的`keyCode`来获取按键的编码。
|
|
|
|
|
|
|
|
|
|
|
2019-11-26 19:49:07 +08:00
|
|
|
|
此外,`event`事件对象里面还提供了以下几个属性:
|
2019-11-14 21:11:14 +08:00
|
|
|
|
|
|
|
|
|
- altKey
|
|
|
|
|
|
|
|
|
|
- ctrlKey
|
|
|
|
|
|
|
|
|
|
- shiftKey
|
|
|
|
|
|
|
|
|
|
|
2019-11-26 19:49:07 +08:00
|
|
|
|
上面这三个属性,可以用来判断`alt`、`ctrl`、和`shift`是否被按下。如果按下则返回true,否则返回false。代码举例:
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<body>
|
|
|
|
|
<script>
|
|
|
|
|
document.onkeydown = function(event) {
|
|
|
|
|
event = event || window.event;
|
|
|
|
|
console.log('qianguyihao:键盘按下了');
|
|
|
|
|
|
|
|
|
|
// 判断y和ctrl是否同时被按下
|
|
|
|
|
if (event.ctrlKey && event.keyCode === 89) {
|
|
|
|
|
console.log('ctrl和y都被按下了');
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
**举例**:input 文本框中,禁止输入数字。代码实现:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```html
|
|
|
|
|
<body>
|
|
|
|
|
<input type="text" />
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
//获取input
|
|
|
|
|
var input = document.getElementsByTagName('input')[0];
|
|
|
|
|
|
|
|
|
|
input.onkeydown = function(event) {
|
|
|
|
|
event = event || window.event;
|
|
|
|
|
|
|
|
|
|
//console.log('qianguyihao:' + event.keyCode);
|
|
|
|
|
//数字 48 - 57
|
|
|
|
|
//使文本框中不能输入数字
|
|
|
|
|
if (event.keyCode >= 48 && event.keyCode <= 57) {
|
|
|
|
|
//在文本框中输入内容,属于onkeydown的默认行为
|
|
|
|
|
return false; // 如果在onkeydown中取消了默认行为,则输入的内容,不会出现在文本框中
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 举例
|
|
|
|
|
|
2019-11-14 21:11:14 +08:00
|
|
|
|
|
2019-11-26 19:49:07 +08:00
|
|
|
|
## 我的公众号
|
2019-11-14 21:11:14 +08:00
|
|
|
|
|
2019-11-26 19:49:07 +08:00
|
|
|
|
想学习<font color=#0000ff>**代码之外的技能**</font>?不妨关注我的微信公众号:**千古壹号**(id:`qianguyihao`)。
|
2019-11-14 21:11:14 +08:00
|
|
|
|
|
2019-11-26 19:49:07 +08:00
|
|
|
|
扫一扫,你将发现另一个全新的世界,而这将是一场美丽的意外:
|
2019-11-14 21:11:14 +08:00
|
|
|
|
|
2019-11-26 19:49:07 +08:00
|
|
|
|
![](http://img.smyhvae.com/20190101.png)
|
2019-11-14 21:11:14 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|