Event.target、Event.toElement 和 Event.srcElement 有什么区别?

IT技术 javascript javascript-events
2021-03-13 18:11:29

我有以下代码:

document.oncontextmenu = function(evt) {
    evt = evt || window.event;
    console.log(evt.target, evt.toElement, evt.srcElement);
};

通过在 a 上单击鼠标右键<div class="foo"></div>,返回:

div.foo, div.foo, div.foo

通过在 a 上单击鼠标右键<input>,返回:

输入,输入,输入

所有似乎都带来了相同的结果。是否存在其中一个与其他用途不同的情况?

1个回答

活动的目标是到该事件被分派的元素:

使用DOM 事件流事件定位到的对象事件目标是 属性的值Event.target

srcElement是一种 IE 非标准方式来获取target.

当前事件的目标是具有当前正在调用的事件侦听器的元件:

在事件流中,当前事件目标是与当前正在分派事件处理程序关联的对象该对象可能是事件目标本身或其祖先之一。当前事件目标随着事件在事件流的各个阶段从一个对象传播到另一个对象而发生变化。当前事件目标是Event.currentTarget属性的值

this在事件侦听器内部使用是获取当前事件目标的常用(和标准)方式。

一些种类的事件有relatedTarget

用于标识EventTarget与 UI 事件相关的次要事件,具体取决于事件类型。

fromElement并且toElement是 IE 非标准方式来获取relatedTarget.

最新的 chrome 支持“toElement”,但不支持 Mozilla Firefox。我不得不使用“目标”属性来支持 Mozilla 中的一些案例。
2021-04-23 18:11:29
我在 Chrome 60 版中使用“toElement”——你确定这是“IE 非标准方式”吗?
2021-04-24 18:11:29
MSDN 说它是“非标准的”并且“不要在面向网络的生产站点上使用它”:developer.mozilla.org/en-US/docs/Web/API/Event/srcElement
2021-05-06 18:11:29