Как достать текст из буфера обмена?

Для того чтобы достать текст из буфера обмена (clipboard) в JavaScript, можно воспользоваться API браузера - Document.execCommand и ClipboardEvent.

Первый способ заключается в использовании метода "paste" события "clipboard" для обработки события вставки из буфера обмена. Вот пример кода:

document.addEventListener('paste', function(e) {
  var clipboardData = e.clipboardData || window.clipboardData;
  var pastedText = clipboardData.getData('text');
  console.log(pastedText);
});

В этом примере мы добавляем обработчик события "paste" к элементу document. Внутри обработчика мы получаем объект clipboardData, который содержит данные о вставленном тексте. Мы используем метод getData() для получения текста из буфера.

Второй способ - это использование API браузера - AsyncClipboard API (https://developer.mozilla.org/en-US/docs/Web/API/AsyncClipboard_API). Этот API предоставляет более мощный и гибкий способ работы с буфером обмена, но на данный момент он еще находится в стадии эксперимента и поддерживается не всеми браузерами.

Вот пример использования AsyncClipboard API:

navigator.clipboard.readText()
  .then(text => {
    console.log(text);
  })
  .catch(err => {
    console.error('Failed to read clipboard contents: ', err);
  });

Этот код использует метод readText() объекта Clipboard API, который возвращает Promise с текстом из буфера обмена. Если чтение успешно, текст можно получить в блоке then(). Если чтение не удалось, ошибку можно обработать в блоке catch().

Важно отметить, что для использования AsyncClipboard API необходимо соблюдать требования безопасности, так как это чувствительная операция и может потребовать разрешений пользователя.

В целом, выбор способа доставания текста из буфера обмена в JavaScript зависит от ваших конкретных требований и поддержки браузеров, с которыми вы собираетесь работать.