小编典典

为什么 Event.target 不是 Typescript 中的元素?

all

我只是想用我的KeyboardEvent

var tag = evt.target.tagName.toLowerCase();

虽然Event.target是类型EventTarget,但它不继承自Element。所以我必须像这样投射它:

var tag = (<Element>evt.target).tagName.toLowerCase();

这可能是由于某些浏览器不遵循标准,对吧?TypeScript 中正确的与浏览器无关的实现是什么?

PS 我正在使用 jQuery 来捕获KeyboardEvent.


阅读 114

收藏
2022-07-16

共1个答案

小编典典

它不继承自,Element因为并非所有事件目标都是元素。

来自 MDN

元素、文档和窗口是最常见的事件目标,但其他对象也可以是事件目标,例如 XMLHttpRequest、AudioNode、AudioContext 等。

即使KeyboardEvent您尝试使用的 DOM 元素或窗口对象(理论上也可能发生在其他事物上)也可能发生在 DOM
元素上,因此将evt.target其定义为Element.

如果它是 DOM 元素上的事件,那么我会说您可以放心地假设evt.target.
是一个Element。我不认为这是跨浏览器行为的问题。只是那EventTarget是一个比Element.

进一步阅读:https
://github.com/Microsoft/TypeScript/issues/29540

2022-07-16