When the dialog is opened, it gets focus, so the browser window loses focus. The focus will be back when the dialog is closed. You have to subscribe focus
event on window
, but as window can lose and get focus because of a lot of reasons, you have to keep a flag if the dialog have been opened.
Following code works in:
- Chrome 63.0.3239.84 x64 on Windows 7
- Internet Explorer 11.0.9600.18860 on Windows 7
- Opera 12.18 1872 x32 on Windows 7
and does NOT work in:
- Firefox 58.0b11 (64-bit) on 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>