Материалы. Как отловить событие отмены окна выбора файла в JavaScript 

5 лет назад

Потребовалось на работе отловить закрытие окна выбора файла у <input type="file" id="input">

Погуглив большие и страшные решения, нашёл одно простое, но не работающее, точнее работающее но с опозданием в 1 цикл открытия окна.

После чего переписал его вот в такой.

 
var input = document.getElementById('input') 
input.addEventListener('click',enter) 
function enter() 
{ 
    document.body.addEventListener('focusin',leave) 
} 
     
function leave() 
{ 
setTimeout(function(){ 
      if(input.value.length) alert('Есть файлы') 
      else alert('Файлов нет') 
      document.body.removeEventListener('focusin',leave) 
    },100) 
}

Суть метода, в момент нажатия на выбор файла, подписываемся на событие возвращения к странице. После возвращения с задержкой в 100ms (можно и меньше, но не 0), проверяем что в поле выбора. Если там ничего нет, значит выбор был отменён.

Ссылка для тестирования: http://jsfiddle.net/kb52n3cs/6/