Lets say I have two elements: elm_1 and elm_2 and a variable var x = 1
The elements have the following events:
elm_1.addEventListener('focusout', () => x = 1)
elm_2.addEventListener('focusin', () => x = 2)
My question is if I change focus from elm_1 to elm_2, can I be sure which event triggers first? Will x be equal to 1 or 2 after I have changed focus? And I don't mean just in this particular case, I am asking how/if I can be 100% sure of which event is executed first so that regardless of what is inside the functions, I can know what will happen first.
According to the documentation, you can be sure that
focusoutalways fire on the losing focus element beforefocusinis raised on the new element. So in your particular case the variablexwould be 2 after both events fired.Source:
https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent#order_of_events
Note that even though some implementations shifted the order of some events, both
focusoutandfocusinare fixed in that order.