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

Gui*_*nto 72 javascript javascript-events

我有以下代码:

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

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

div.foo,div.foo,div.foo

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

输入,输入,输入

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

Ori*_*iol 67

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

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

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

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

在事件流中,当前事件目标是与当前正在调度的事件处理程序关联的对象.该对象可以是事件目标本身或其祖先之一.当事件通过事件流的各个阶段事件传播到对象时,当前事件目标会发生变化.当前事件目标是属性的值 .Event.currentTarget

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

某种活动有relatedTarget:

用于标识EventTarget与UI事件相关的辅助节点,具体取决于事件的类型.

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

  • 我在Chrome 60版中使用"toElement" - 您确定它是"IE非标准方式"吗? (6认同)
  • MSDN 说它是“非标准的”并且“不要在面向网络的生产站点上使用它”:https://developer.mozilla.org/en-US/docs/Web/API/Event/srcElement (2认同)