gpt4 book ai didi

javascript - MouseEvent 的目标总是一个元素吗?

转载 作者:行者123 更新时间:2023-12-03 16:56:16 26 4
gpt4 key购买 nike

Visual Studio Code 显示目标变量是 EventTarget输入以下 TypeScript 代码:

document.addEventListener('click', (event) => {
let target = event.target
})

为什么不将其标记为 Element ?可以CharacterDataDocument也是 MouseEvent 的目标?我在使用以下 HTML 代码的 Web 浏览器窗口中单击,但我无法获取 Element 以外的 EventTarget 类型。

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script>
document.addEventListener('click', (event) => {
let target = event.target
console.log(target instanceof Element)
})
</script>
</head>
<body>
test
</body>
</html>

如果 Visual Studio Code 将 MouseEvent 的目标标记为 Element,那么我就可以用 Typescript 编写:

document.addEventListener('click', (event) => {
if (event.target.matches('.carousel__control--prev'))
shiftCarouselLeft(event.target.closest('.carousel'))
})

但现在我必须显式地将 event.target 转换为 Element 以在其上调用 matches() 函数:

document.addEventListener('click', (event) => {
let target = <Element>event.target
if (target.matches('.carousel__control--prev'))
shiftCarouselLeft(target.closest('.carousel'))
})

最佳答案

任何 EventTarget 都可以是 MouseEvent 事件的目标:

const foo = new EventTarget();
foo.addEventListener('click', (evt) => {
console.log('is `foo`', evt.target === foo);
console.log('is MouseEvent', evt instanceof MouseEvent);
});
foo.dispatchEvent( new MouseEvent('click') );

关于javascript - MouseEvent 的目标总是一个元素吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60338211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com