When a dialog opens, it gains focus, so the browser window loses focus. Focus will be returned when the dialog is closed. You should subscribe to the focus
event on window
, but since the window may lose and gain focus due to many reasons, you must save the flag if the dialog was opened.
The following code works in:
- Chrome 63.0.3239.84 x64 on Windows 7
- Internet Explorer 11.0.9600.18860 Windows 7
- Opera 12.18 1872 x32 Windows 7
:
- Firefox 58.0b11 (64- ) Windows 7
function now() {
return window.performance ? performance.now() : +new Date
}
var isFileDialogOpened = false;
var input = document.querySelector('input');
input.addEventListener('click', function (e) {
console.log('clicked', now())
isFileDialogOpened = true
})
input.addEventListener('blur', function (e) {
console.log('input blur', now())
isFileDialogOpened = true
})
window.addEventListener('focus', function (e) {
if (isFileDialogOpened) {
console.log('closed (window got focus)', now())
isFileDialogOpened = false
}
})
<input type=file>
Hide result