事件对象,点击光标获取,获取键盘

107 阅读2分钟

1.事件对象

样式代码

 <style>
    div {
        width: 100px;
        height: 100px;
        background-color: pink;
    }
</style>

body代码

    <div></div>
什么是事件对象

当触发一个事件以后, 对该事件的一些描述信息

比如:

=> 鼠标点击时的坐标

=> 触发键盘事件时按下的那个按键

每一个事件都会有一个对象来描述这信息, 我们就把这个对象叫做事件对象

浏览器给我们一个 "黑盒子", 叫做 window.event 就是对事件信息的所有描述

语法:

    元素.onclick = function () {  
     console.log(window.event.X轴的坐标点信息)
     console.log(window.event.Y轴的坐标点信息)
 }

缺点: 这个东西有兼容性问题, 在 低版本的 IE 里边能用, 但是在高版本 IE 和 chrome 里边是不好使

所以我们需要换一种使用方式:就是在每一个事件处理函数的形参位置, 默认第一个就是事件对象

1.0 获取元素

    var box = document.querySelector('div')
    

点击事件

    box.onclick = function (e) {
        // e = e || window.event    扩展 了解即可
        // console.log(e.X轴的坐标)
        // console.log(e.Y轴的坐标)

        console.log(e)
    }

2.点击事件光标位置的获取

样式代码

<style>
    body {
        height: 5000px;
    }
    div {
        width: 300px;
        height: 300px;
        padding: 20px;
        border: 10px solid #333;
        margin: 50px;
        position: fixed;
        top: 300px;
    }
</style>

body代码

    <div></div>
点击事件的光标位置

坐标一定是一个相对的数据

比如:

=> 相对于事件源 (就是我们点击的那个元素)

=> 相对于页面

=> 相对于浏览器窗口

2.0 获取元素

    var box = document.querySelector('div')
    

点击事件

     box.onclick = function (e) {
        // 1. 相对于事件源 的鼠标坐标点     相对于点击的元素的边框内测开始计算
        console.log('==========================')
        console.log('相对于事件源 X 轴', e.offsetX)
        console.log('相对于事件源 Y 轴', e.offsetY)

        // 2. 相对于页面
        console.log('==========================')
        console.log('相对于页面 X 轴', e.pageX)
        console.log('相对于页面 Y 轴', e.pageY)

        // 3. 相对于浏览器窗口
        console.log('==========================')
        console.log('相对于浏览器窗口 X 轴', e.clientX)
        console.log('相对于浏览器窗口 Y 轴', e.clientY)
    }

3.获取键盘按键

body代码

    <input type="text">

3.0 获取元素

    var inp = document.querySelector('input')

键盘的每一个按键都有一个自己的编码

我们可以通过 事件对象.keyCode 来获取

e.keyCode 已经被移除了, 但是很多主流浏览器还支持使用

现在推荐我们使用: e.key

     inp.onkeyup = function (e) {
        console.log('e.keyCode: ' + e.keyCode + '; e.key: ' + e.key)
    }

组合按键 alt / shift / ctrl

    inp.onkeyup = function (e) {
        // console.log(e.ctrlKey)
        // console.log(e.altKey)
        // console.log(e.keyCode)  // q === 81

        if (e.altKey && e.keyCode === 81) {
            console.log('按下了组合按键 alt + q')
        }
    }