我只是想用我的KeyboardEvent做这个
var tag = evt.target.tagName.toLowerCase();
而事件。target是EventTarget类型,它不继承自Element。所以我必须像这样转换它:
var tag = (<Element>evt.target).tagName.toLowerCase();
这可能是因为一些浏览器不符合标准,对吧?TypeScript中正确的浏览器不可知实现是什么?
附注:我使用jQuery来捕获KeyboardEvent。
它不从Element继承,因为并非所有事件目标都是元素。
中数:
元素、文档和窗口是最常见的事件目标,但其他对象也可以是事件目标,例如XMLHttpRequest、AudioNode、AudioContext等。
甚至您尝试使用的KeyboardEvent也可以出现在DOM元素或窗口对象上(理论上也可以出现在其他东西上),所以在那里它对evt没有意义。目标定义为元素。
如果它是DOM元素上的一个事件,那么我想说您可以安全地假设event .target。是一个元素。我不认为这是跨浏览器行为的问题。只是EventTarget是一个比Element更抽象的接口。
进一步阅读:https://github.com/Microsoft/TypeScript/issues/29540