我只是想用我的KeyboardEvent
KeyboardEvent
var tag = evt.target.tagName.toLowerCase();
虽然Event.target是类型EventTarget,但它不继承自Element。所以我必须像这样投射它:
Event.target
EventTarget
Element
var tag = (<Element>evt.target).tagName.toLowerCase();
这可能是由于某些浏览器不遵循标准,对吧?TypeScript 中正确的与浏览器无关的实现是什么?
PS 我正在使用 jQuery 来捕获KeyboardEvent.
它不继承自,Element因为并非所有事件目标都是元素。
来自 MDN:
元素、文档和窗口是最常见的事件目标,但其他对象也可以是事件目标,例如 XMLHttpRequest、AudioNode、AudioContext 等。
即使KeyboardEvent您尝试使用的 DOM 元素或窗口对象(理论上也可能发生在其他事物上)也可能发生在 DOM 元素上,因此将evt.target其定义为Element.
evt.target
如果它是 DOM 元素上的事件,那么我会说您可以放心地假设evt.target. 是一个Element。我不认为这是跨浏览器行为的问题。只是那EventTarget是一个比Element.
进一步阅读:https ://github.com/Microsoft/TypeScript/issues/29540