v145 · light dismiss
Which event closed it
Open the popover, then dismiss it however you like — a click outside, a drag, a right-click, Escape. Every pointer and mouse event is recorded, and the moment the popover actually closed is marked in the middle of the sequence.
Record a dismissal
| # | event | button | target | trusted | ms |
|---|---|---|---|---|---|
| Nothing recorded yet. | |||||
"Trusted" is event.isTrusted: true for input the user actually produced, false for anything a script dispatched. It matters here because light dismiss only responds to the real thing — which the control below relies on.
The control: dispatched events do nothing
This button opens the popover and then fires a full synthetic sequence at the page behind it — pointerdown, pointerup, click — using constructed events. If light dismiss responded to those, any script on the page could close another script's menu.
This is also why the automated checks for this page can verify the recording, the open state and the API surface, but not the dismissal itself: the harness has no way to produce a real pointer. The gesture is yours to make.
Reading the sequence
On the corrected behaviour, the close lands with the click — after both pointerdown and pointerup. On the old behaviour it landed on the pointerdown, with the other two arriving afterwards into a popover that was already gone.
That ordering is what makes a drag safe. A touch scroll produces a pointerdown and then a pointercancel — never a click — so nothing dismisses. And a right-click produces pointerdown with button: 2 and a contextmenu, again with no click, so the menu survives long enough for the context menu to appear over it.