【发布时间】:2026-01-14 07:30:02
【问题描述】:
我有一个充满图片(儿童)的图层,当鼠标在图层上时,我想知道鼠标相对于父图层和其中一张图片的坐标。 我没有这样做。为了演示这个问题,我想出了一个简单的例子: 1 层,带有一张子图片并触发鼠标悬停事件。
考虑以下几点:
<!DOCTYPE html>
<html>
<head>
<title>bubbles</title>
</head>
<body>
<div id="layer" style="width:1000px; height: 500px; border: 2px solid #8AC007;">
<img id="image" src="https://www.dartlang.org/logos/dart-logo.png" style="position:absolute; left: 100px; top:100px; width:100px; height:100px; border: 2px solid #8AC007;">
</div>
<script type="application/dart" src="main.dart"></script>
<script data-pub-inline src="packages/browser/dart.js"></script>
</body>
</html>
和飞镖脚本:
import 'dart:html';
void main() {
querySelector("#layer").onMouseMove.listen((e)=>print("${e.target}: ${e.offset}"));
}
当我将鼠标移到图层(不是图像!)上时,我收到消息:div: Point(x,y),其中点 (e.offset) 在图层坐标中给出;当我将鼠标移到图像上时,我收到消息:img: Point(x, y) 和图像坐标中的e.offset。为 image.onMouseMove 设置了 Bou NO 侦听器。
因此问题:
- 发生了什么?为什么会触发 image.onMouseOver 事件?
- 让我们假设上一个问题的答案是因为图像是图层的后代。但是随着事件冒泡会发生什么?为什么 DOM 中的 image.onMouseOver 事件没有冒泡到层并触发 layer.onMouseOver 事件?
【问题讨论】:
标签: dart event-bubbling dart-html