Событие вставки event.clipboardData не вставляет несколько файлов в Firefox

Вопрос или проблема

Я заметил, что в 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. Мы надеемся, что это будет исправлено в будущих обновлениях браузера.

Оцените материал
Добавить комментарий

Капча загружается...