JavaScript教程:事件对象

说明

当触发响应函数时,浏览器还会传入 事件对象

事件对象 封装了 当前事件的相关信息

案例

<button id="btn">按钮</button>
<body>
<script>
    window.onload = function(){
        var btn = document.getElementById("btn")
        //传入 事件对象
        btn.onclick = function(event){
            console.log(event)
        }
    }
</script>

应用场景

获取鼠标位置

<div id="box" style="width: 200px; height: 200px; border: 1px red solid;"></div>
<input type="text" id="show">
<script>
    window.onload = function (){
        var box = document.getElementById("box")
        var show = document.getElementById("show")
        box.onmousemove = function(event){
            event = event || window.event

            //获取鼠标的水平坐标
            var x = event.clientX
            //获取鼠标的垂直坐标
            var y = event.clientY
            show.value = x +","+ y
        }
    }
</script>

获取触发事件的dom对象

通过 event.target 可以获取 触发事件的dom对象,通过该对象可以修改 标签的属性

如:点击按钮时,修改按钮的内容

<input type="button" value="点我" id="btn">
<script>
    // 点击按钮时,浏览器监听到,调用该函数,将事件对象传入进来
    document.getElementById("btn").onclick = function(event){
        console.log("event:",event)
        console.log("target:",event.target) // 获取触发事件的dom对象
        event.target.value="按钮"
    }
</script>

获取 事件类型

通过 event.target 可以获取 事件类型

<input type="button" value="点我" id="btn">
<script>
    // 点击按钮时,浏览器监听到,调用该函数,将事件对象传入进来
    document.getElementById("btn").onclick = function(event){
        console.log("event:",event)
        console.log("target:",event.target) // 获取触发事件的类型
    }
</script>

兼容性

Chrome、Firefox、edge浏览器、IE8之后

浏览器会传入 事件对象,上面代码不需要改动

IE8之前

浏览器不会传入 事件对象,而是通过 window.event 获取事件对象,也就是说:上面代码在 IE8之前,执行报错

解决

btn.onclick = function(event){
    // 如果 event 有值,就用 event;没有值,就用 windows.event
    event = event || windows.event
    console.log(event)
}

原文出处:/show_1IX33PW25zMb.html