JavaScript事件对象

2022-11-14 16:49:54 浏览数 (1)

theme: channing-cyan

这是我参与8月更文挑战的第27天,活动详情查看:8月更文挑战

什么是事件对象

事件对象其实就是event对象,在我们操作DOM发生事件时,所有的相关信息都会被集中存储在这个event对象中,这个对象中包含了被发生事件的元素,发生事件的类型以及可能与特点事件相关的其他数据,所有浏览器都支持这个event对象,但是ie的访问方式略有不同,我们稍后细说,往下观看。

DOM事件对象

event对象是传给事件处理程序的唯一参数,我们输出一下它看看里面都有什么。

代码语言:javascript复制
<body>
    <button>点我输出event</button>
</body>
<script>
    let btn = document.querySelector('button');
    btn.onclick = function(event) {
        console.log(event);
    }
</script>

因为太长了这里缩小了一点。大家可以也尝试输出一下看看都有什么。里面挺多东西的,但一般我们用到的就那么几个。

target 表示目标事件

eventPhase 表示事件处理程序阶段,1代表捕获,2代表达到目标,3代表冒泡

type 被触发的事件类型

detail 事件相关的其他信息

currentTarget 当前事件处理程序所在的元素

有时候我们读别人代码的时候别人可能就写了一个e代替event,这样也是可以跑的,我们可以传任何名称,都可以跑,一般我建议写event,因为本来就是这样定义的,还增加可读性。

我们说一下this指向问题

在事件处理程序内部,this对象始终等于currentTarget的值。 我们输出一下看看

代码语言:javascript复制
 let btn = document.querySelector('button');
    btn.onclick = function(event) {
        console.log(event);
        console.log(this);
        console.log(event.currentTarget);
}

注意:event对象值在事件处理执行期间存在,一旦执行完毕后自动销毁。

IE事件对象

前面提到过ie的访问方式不同,在ie中event对象可能是window对象中的一个属性。 写一下

代码语言:javascript复制
btn.onclick = function(){
    let event = window.event;
    console.log(event);
}

这里就是window.event保存着event对象,只做一下了解吧,毕竟都2021年了,IE马上要退出历史舞台了。

0 人点赞