事件对象
oBox.onmousemove = function(e){
// e 就是事件对象
};
offset方法:
offsetX,检测事件鼠标距离自身左侧的距离
offsetY,检测事件鼠标距离本身上侧的距离
通过打点调用此方法 e.offsetX || e.offsetY
client方法:
clientX:测试事件鼠标距离窗口左侧距离
clienY:检测事件鼠标距离窗口上测的距离
通过打点调用此方法 e.clientX || e.clientY
page方法
pageX:测试事件鼠标距离网页左侧的距离
pageY:测试事件鼠标距离页面上测的距离
通过打点调用此方法:e.pageX || e.pageY
案例演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
* {
margin:0;
padding:0;
}
#box {
width:200px;
height:200px;
background-color:#333;
margin:100px;
}
body {
height:2000px;
}
#info {
font-size:30px;
}
</style>
</head>
<body>
<div id="box"></div>
<div id="info"></div>
<script>
var oBox = document.getElementById('box');
var oInfo = document.getElementById('info');
oBox.onmousemove = function(e){
oInfo.innerHTML = 'offsetX/Y:'+e.offsetX+','+e.offsetY+'<br>'+
'clientX/Y:'+e.clientX+','+e.clientY+'<br>'+
'pageX/Y:'+e.pageX+','+e.pageY;
};
</script>
</body>
</html>
charCode字符码
| 字符 | 字符码 |
|---|---|
| 数字0~数字9 | 48~57 |
| 大写字母A~Z | 65~90 |
| 小写字母a~z | 97~122 |
\
keyCode键码
| 按键 | 键码 |
|---|---|
| 数字0~数字9 | 48~57(同charCode键码完全相同) |
| 字母不分大小a~z | 65~90(同charCode键码的大写字母A-Z,而keyCode不分大小写,一律为65-90) |
| 四个方向键,左上右下 | 37 、38、39、40 |
| 回车键 | 13 |
| 空格键 | 32 |
\
案例演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text" id="field1">
<h1 id="info1"></h1>
<input type="text" id="field2">
<h1 id="info2"></h1>
<script>
var oField1 = document.getElementById('field1');
var oInfo1 = document.getElementById('info1');
var oField2 = document.getElementById('field2');
var oInfo2 = document.getElementById('info2');
oField1.onkeypress = function(e) {
oInfo1.innerText = '你输入的字符的字符码是'+e.charCode;
};
oField2.onkeydown = function(e) {
oInfo2.innerText = '你按下的键的键码是'+e.keyCode;
};
</script>
</body>
</html>
preventDefault()方法
阻止浏览器默认行为
案例演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>
只能输入小写字母和数字:
<input type="text" id="field">
</p>
<script>
var oField = document.getElementById('field');
oField.onkeypress = function(e) {
console.log(e.charCode);
// 根据用户输入的字符的字符码(e.charCode)
// 数字0~9,字符码 48~57
// 小写字母a~z,字符码97~122
if(!(e.charCode>=48 && e.charCode<=57 || e.charCode>=97 && e.charCode<=122)){
// 阻止浏览器默认的行为
e.preventDefault();
}
};
</script>
</body>
</html>
鼠标滚轮事件onmousewheel
鼠标滚轮事件onmousewheel,它的事件对象e提供deltaY属性表示鼠标滚动方向,向下滚动时返回正值,向上滚动时返回负值
案例演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
#box {
width:200px;
height:200px;
background-color:#333;
}
</style>
</head>
<body>
<div id="box"></div>
<h1 id="info">0</h1>
<script>
var oBox = document.getElementById('box');
var oInfo = document.getElementById('info');
// 全局变量就是info中显示的数字
var a=0;
// 给box盒子添加鼠标滚轮事件监听
oBox.onmousewheel = function(e){
// 阻止默认事件:就是说当用户在盒子里面滚动鼠标滚轮的时候,此时不会引发页面的滚动条的滚动
e.preventDefault();
if(e.deltaY > 0) {
a++;
}
else {
a--;
}
oInfo.innerText = a;
};
</script>
</body>
</html>
e.stopPropagation()方法
e.stopPropagation()方法用来阻止事件继续传播
在一些场合,非常有必要切断事件继续传播,否则会造成页面特效显示bug
案例演示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.modal {
position:absolute;
top:50%;
left:50%;
margin-left:-200px;
margin-top:-70px;
width:400px;
height:140px;
background-color:#333;
display:none;
}
</style>
</head>
<body>
<button id="btn">按我弹出弹出层</button>
<div class="modal" id="modal"></div>
<script>
var oBtn= document.getElementById('btn');
var oModal = document.getElementById('modal');
// 点击按钮时,弹出层层显示
oBtn.onclick = function(e) {
// 按钮属于页面一部分,会冒泡传播,弹出层会瞬间被关闭。所有必须阻断传播
e.stopPropagation();
oModal.style.display='block';
};
// 点击页面任何部分时,弹出层关闭
document.onclick = function() {
oModal.style.display='none';
};
// 点击弹出层内部的时候,不能关闭弹出层的,所以应该阻止事件继续传播
oModal.onclick = function(e) {
// 阻止时间继续传播到document身上
e.stopPropagation();
};
</script>
</body>
</html>