writeText()
— это метод объекта Clipboard
, предназначенный для копирования текстовых данных в буфер обмена. Метод возвращает Promise
, который завершается успешно в случае, если текст скопирован, и выдаёт ошибку, если операция не удалась.
navigator.clipboard.writeText('text')
navigator
в данном случае - это глобальный объект, предоставляющий информацию о браузере пользователя и его операционной системе.
clipboard
— это свойство объекта navigator
, которое предоставляет доступ к Clipboard API. Этот API, в свою очередь, позволяет взаимодействовать с буфером обмена операционной системы, выполняя операции вырезания, копирования и вставки.
Так как writeText()
возвращает Promise
, результат работы метода обрабатывают с помощью then()
при успешном выполнении, и catch()
, для обработки ошибок.
navigator.clipboard.writeText('text')
.then(() => {
console.log('Скопировано')
})
.catch(error => {
console.error(`Текст не скопирован ${error}`)
})
<input type="text" id="copy-text">
<button id="copy-btn">Скопировать</button>
<script>
let copyText = document.querySelector('#copy-text')
document.querySelector('#copy-btn').addEventListener('click', () => {
navigator.clipboard.writeText(copyText.value)
.then(() => {
console.log('Скопировано')
})
.catch(error => {
console.error(`Текст не скопирован ${error}`)
})
})
</script>
В результате получим текст из input
в буфер обмена и сообщение Скопировано в console.
Попробуем скопировать текст из input
при загрузке страницы.
document.addEventListener("DOMContentLoaded", function() {
let copyText = document.querySelector('#copy-text')
navigator.clipboard.writeText(copyText.value)
.then(() => {
console.log('Скопировано')
})
.catch(error => {
console.error(`Текст не скопирован ${error}`)
})
});
Результатом будет следующий текст в console: Текст не скопирован. NotAllowedError: Document is not focused. Это произошло потому, что был вызван catch()
, который сообщил нам о неудаче. Дело в том, что writeText()
позволит скопировать текст в буфер обмена только в том случае, если данное действие инициирует сам пользователь, например, через клик мыши или нажатие клавиши, в противном случае выполнение метода завершится неудачей из-за ограничений безопасности браузера.