I am confused by the value of document.activeElement
during focus events. Consider the following example:
/*
* 1. Click on button to focus it
* 2. Press TAB
*/
const div = document.querySelector('div')
const add = div.addEventListener.bind(div)
add('keydown', () => console.log('Key down', document.activeElement), false)
add('keyup', () => console.log('Key up', document.activeElement), false)
add('focusout', () => console.log('Focus out', document.activeElement), false)
add('focusout', () => requestAnimationFrame(() => console.log('rAF Focus out', document.activeElement)), false)
<div>
<button>Click</button>
<input>
</div>
This results in:
Key down <button>Click</button>
Focus out <body>…</body>
rAF Focus out <input></input>
Key up <input></input>
Specifically i am wondering why document.activeElement
is set to body
in focusout
?