Функция .click
имитирует щелчок мыши по элементу.Вам необходимо использовать обработчик .onclick
. Есть два способа сделать это:
- Установить свойство onclick элемента
uploader.onclick = function()...
var uploader = document.querySelector('input[type="file"]');
uploader.onclick = function(e){
console.log('Hello!', e.target);
};
<input type="file" accept="image/*" />
Установить обработчик для события onclick
uploader.addEventListener('click', fucntion()...
var uploader = document.querySelector('input[type="file"]');
uploader.addEventListener('click', function(e){
console.log('Hello!', e.target);
});
<input type="file" accept="image/*" />
addEventListener не перезаписывает существующие обработчики событий для элементов, тогда как onclick переопределяет любые существующие обработчики событий onclick = function.
addEventListener не работает вболее старые версии Internet Explorer (> IE 9), которые вместо этого используют attachEvent (
Вот способ обработки событий на динамически добавленных элементах - вы можете привязать прослушиватель событий к
body
и проверить элемент, по которому щелкнули, на соответствие критериям.
Таким образом, прослушиватель событий неНе перекрываются другие обработчики, связанные с телом.
document.body.addEventListener('click', function(e){
if (e.target.tagName == 'INPUT' && e.target.type == 'file') {
var newElement = document.createElement('INPUT');
newElement.type = 'file';
document.body.appendChild(newElement);
console.log('Hello!', e.target);
}
});
<input type="file" accept="image/*" class="field" />