IE8和Firefox中的event.toElement?

cap*_*lam 46 javascript dom cross-browser dom-events

我注意到在Chrome和IE9中,对于onmouseout事件,有一个event.toElement属性(所以你可以确定鼠标现在指向哪个元素).

我在Firefox中找不到类似的属性.

不幸的是我无法使用jQuery来处理这些事件,我必须使用原生的js.

任何意见,将不胜感激.

Aza*_*lvi 38

用它来解决我的问题

event.target
Run Code Online (Sandbox Code Playgroud)

  • 不是目标元素是鼠标*离开*?toElement将是鼠标*留给*的元素,所以答案是错的? (7认同)

cap*_*lam 22

在Firefox中,它是event.relatedTarget https://developer.mozilla.org/en/DOM:event.relatedTarget#1003983

  • 仅供参考 - IE11似乎没有`event.toElement` (4认同)
  • 请使用Azam Alvi的答案.目标是首选. (2认同)

sim*_*omo 10

当我使用Jay的答案时,我遇到了一个问题,event.targetfirefox指向event.toElementchrome上目标的父元素.
在查看事件obj后,我发现event.originalEvent.target,它在firefox和chrome上都很好用.


gpa*_*sse 8

实际event.currentTarget应该适用于Chrome,Firefox和IE

  • event.currentTarget返回事件所属的元素,而不是与之交互的元素.例如,您可以使用事件冒泡来定义父元素上的事件,因此您不必将类似的事件处理程序附加到所有子元素. (2认同)

Jay*_*Jay 6

截至2014年,IE11不支持toElement,我查看了事件对象,发现target与toElement具有相同的数据.

也就是说,如果单击此事件触发的元素内的子元素,则子元素将成为"目标"并存储在此属性中.

触发事件的元素存储在currentTarget属性中.

请注意,我只测试了这个11,因此旧版本可能不支持这个.

因此,为了支持firefox ie和chrome(以及可能的其他人,必须使用polyfill,例如:

var target = e.toElement || e.relatedTarget || e.target || function () { throw "Failed to attach an event target!"; }
Run Code Online (Sandbox Code Playgroud)

哪里eevent