1.什么是事件对象?
当触发一个事件以后,对该事件的一些描述信息
比如:
=> 鼠标点击时的坐标
=> 触发键盘事件时按下的哪个对象
每一个事件都会有一个对象来描述这些信息,我们就把这个对象叫做事件对象
浏览器给我们一个 "黑盒子",叫做 window.event 就是对事件信息的所有描述
语法:元素.onclick = function(){
console.log(window.event.X轴的坐标点信息)
console.log(window.event.Y轴的坐标点信息
}
缺点:这个东西有兼容性问题,在低版本的IE里能使用,但是在高版本 IE和chrome里边不好使
所以我们需要换一种使用方式:
就是在每一个事件处理函数的形参位置,默认第一个就是事件对象
<div></div>
var box = document.querySelector('div')
box.onclick = function(e){
console.log(e)
}
2. 点击事件的光标位置
- 相对于事件源(就是我们点击的那个元素)
- 相对于页面
- 相对于浏览器窗口
<style>
body{
height: 5000px;
}
div{
width: 300px;
height: 300px;
padding: 20px;
border: 10px solid #333;
margin: 50px;
background-color: pink;
position: fixed;
top: 300px;
}
</style>
<div></div>
var box = document.querySelector('div')
box.onclick = function(e){
console.log('===================')
console.log('相对于事件源 X轴',e.offsetX)
console.log('相对于事件源 y轴',e.offsetY)
console.log('===================')
console.log('相对于页面的 x轴',e.pageX)
console.log('相对于页面的 y轴',e.pageY)
console.log('===================')
console.log('相对于浏览器窗口 x轴',e.clientX)
console.log('相对于浏览器窗口 y轴',e.clientY)
}
3.获取键盘按键
- 键盘的每一个按键都有一个自己的编码,我们可以通过事件对象.keyCode 来获取(e.keyCode 已经被移除了,但是很多主流浏览器还支持使用)
- 现在推荐我们使用: e.key
<input type="text">
<script>
var inp = document.querySelector('input')
inp.onkeyup = function(e){
console.log('e.keyCode:',e.keyCode,'e.key:',e.key)
}
inp.onkeyup = function(e){
if(e.altKey && e.keyCode === 81){
console.log('按下了组合按键 alt + q')
}
}
</script>