only add click animation when cast is not sync

This commit is contained in:
Yanzhen Yu
2026-04-01 12:00:00 +08:00
parent 781d6ebd10
commit 6f06b5e1e7

View File

@@ -366,26 +366,32 @@ export class Replayer {
}
const event = new Event(MouseInteractions[d.type].toLowerCase());
const target = (mirror.getNode(d.id) as Node) as HTMLElement;
if (d.type === MouseInteractions.Blur) {
target.blur();
} else if (d.type === MouseInteractions.Click) {
/**
* Click has no visual impact when replaying and may
* trigger navigation when apply to an <a> link.
* So we will not call click(), instead we add an
* animation to the mouse element which indicate user
* clicked at this moment.
*/
this.mouse.classList.remove('active');
// tslint:disable-next-line
void this.mouse.offsetWidth;
this.mouse.classList.add('active');
} else if (d.type === MouseInteractions.Focus) {
target.focus({
preventScroll: true,
});
} else {
target.dispatchEvent(event);
switch (d.type) {
case MouseInteractions.Blur:
target.blur();
break;
case MouseInteractions.Focus:
target.focus({
preventScroll: true,
});
break;
case MouseInteractions.Click:
/**
* Click has no visual impact when replaying and may
* trigger navigation when apply to an <a> link.
* So we will not call click(), instead we add an
* animation to the mouse element which indicate user
* clicked at this moment.
*/
if (!isSync) {
this.mouse.classList.remove('active');
// tslint:disable-next-line
void this.mouse.offsetWidth;
this.mouse.classList.add('active');
}
break;
default:
target.dispatchEvent(event);
}
break;
}