kiskiskit
@kiskiskit
Жадно изучаю каждый пиксель

Как скопировать текст по нажатию?

подскажите пожалуйста, как сделать так, чтобы по нажатию на button "копировать" копировался в буфер обмена вот такое вот значение: 7777777.

https://codepen.io/kiskiskit/pen/MWopxBj
  • Вопрос задан
  • 201 просмотр
Решения вопроса 2
Stalker_RED
@Stalker_RED
Это вариант с многоразовым использованием textarea


Если вам надо разово скопировать, вот вариант подчищающий за собой
(но при повторном вызове он вынужден будет заново пересоздать элемент):


Есть еще новое API navigator.clipboard.writeText, но не везде работает, и запрашивает разрешение на работу с буфером. А старый добрый execCommand('copy') запрашивает разрешение только в IE.
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
export const copyToClipboard = function (text, onComplete) {
  if (navigator.clipboard) {
    navigator.clipboard.writeText(text)
      .then(() => {
        if (typeof onComplete === 'function') onComplete();
      })
      .catch(err => {
        console.warn('Copy fail', err);
      });
  } else {
    let area = document.createElement('textarea');
    document.body.appendChild(area);
    area.value = text;
    area.select();
    document.execCommand('copy');
    document.body.removeChild(area);
    if (typeof onComplete === 'function') onComplete();
  }
};

const element = document.querySelector('...');
copyToClipboard(element.innerText, () => {
    alert('Copied to clipboard!' + '\n' + element.innerText);
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы