Вопрос или проблема
Я заметил, что в Firefox (130.0.1) вставка event.clipboardData
позволяет вставить только один скопированный файл из буфера обмена, тогда как в Chrome (129.0.6668.70) и Edge можно вставить несколько файлов без проблем.
Я не смог найти информацию об этом, является ли это известной проблемой, а MDN Web Docs указали, что эта функция “широко доступна в базовой версии”. Так что, возможно, это ошибка, ожидаемое поведение или что-то другое?
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Документ</title>
</head>
<body>
<input type="text" placeholder="Вставьте/Ctrl+V файлы куда угодно">
<p>Счетчик вставленных файлов: <span id="counter">0</span></p>
<p id="files" style="white-space: pre-line;"></p>
</body>
<script>
document.addEventListener('paste', event => {
Array.from(event.clipboardData.files).map(file => {
document.querySelector('#counter').innerText = parseInt(document.querySelector('#counter').innerText) + 1;
document.querySelector('#files').innerHTML += `<b>Файл ${document.querySelector('#counter').innerText}:</b> ${file.name} <i>(${file.type})</i>\n`;
});
})
</script>
</html>
</div><div class="s-prose js-post-body" itemprop="text">
Это старая ошибка в Firefox, не преднамеренная. Ссылка в Bugzilla: clipboardData поддерживает вставку только одного файла.
Она все еще открыта. Поднимите, чтобы привлечь больше внимания.
</div>
Ответ или решение
Проблема с тем, что event.clipboardData
в Firefox (версия 130.0.1) может вставлять только один файл, в то время как в Chrome (129.0.6668.70) и Edge это работает корректно и позволяет вставлять несколько файлов, действительно существует и является известной.
Данная проблема задокументирована в Bugzilla, где вы можете ознакомиться с деталями по следующей ссылке: clipboardData only supports pasting one file. На данный момент этот баг остается открытым, и его исправление ожидается в будущих версиях браузера.
Если вы столкнулись с этой проблемой и хотите, чтобы она привлекла больше внимания разработчиков Mozilla, то можете оставить комментарий или "поднять" (bump) данный тикет, чтобы продемонстрировать потребность в решении данной проблемы.
Тем не менее, вы можете использовать обходные решения для работы с подобной функциональностью. Например, возможно, использование либо сторонних библиотек, либо запрашивание файлов через диалог выбора файла, что может компенсировать несовершенство встроенной функциональности вставки файлов в Firefox.
В общем, это не баг, связанный с вашим кодом, а ограничение текущей реализации Firefox. Мы надеемся, что это будет исправлено в будущих обновлениях браузера.