Bug 225265
| Summary: | visibilitychange fires in a bad order | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Rob Snow <rsnow> |
| Component: | UI Events | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | ahmad.saleem792, cdumez, webkit-bug-importer, wenson_hsieh |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari 14 | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
Rob Snow
we're trying to use visibility change to determine if we should show a focus ring or not when a user is coming back to a page
unfortunately in Safari the order of events is not what we expected
when coming back to a tab, the focus events run first, then visibilitychange
this is opposite to what happens when the user leaves the tab where blur runs, then visibilitychange runs
I think that running visibilitychange last when leaving and first when arriving makes the most sense.
https://jsfiddle.net/snowystinger/fhxjm2pz/2/
On another note, I also noticed that focus is fired twice.
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Chris Dumez
Adding Wenson to CC. On my Safari, I am having trouble even focusing the button. Even clicking the button does not seem to fire its focus event.
On Chrome, I can click the button and I get the focus event. The order of the events is what I would expect in Chrome.
Radar WebKit Bug Importer
<rdar://problem/77685855>
Ahmad Saleem
*** Safari 16 ***
"visibility changed", "hidden"
"visibility changed", "visible"
*** Chrome Canary 108 ***
visibility changed hidden
visibility changed visible
*** Firefox Nightly 107 ***
visibility changed hidden show:57:33
visibility changed visible show:57:33
______
All browsers are matching with each other, do we need to do anything more? Thanks!
Rob Snow
Doesn't look like they all behave the same. Note the order of blur/focus VS visibility. Everything is still in the same order as it was when I first filed the issue.
*** Safari 16 ***
[Log] blurred (show, line 57)
[Log] visibility changed – "hidden" (show, line 57)
[Log] focused (show, line 57)
[Log] visibility changed – "visible" (show, line 57)
*** Chrome 105 ***
blurred
visibility changed hidden
visibility changed visible
focused
*** Firefox 105 ***
blurred show:57:33
visibility changed hidden show:57:33
visibility changed visible show:57:33
focused show:57:33
See how Safari still fires visibility change after focused instead of before?