Как скопировать значение в буфер обмена
— 2 минуты
Часто может возникнуть необходимость скопировать какое-то значение в буфер обмена, например, при нажатии на кнопку, и есть два способа сделать это:
Современный метод использует navigator.clipboard. Это браузерное API, которое предоставляет асинхронные методы для чтения и записи данных в буфер обмена
javascript1navigator.clipboard.writeText('Какой-то текст') 2
Этот метод прост, но есть один важный нюанс: он работает только в безопасных контекстах (например, на страницах, загруженных по HTTPS). Проверить это можно с помощью флага window.isSecureContext. Если страница не является безопасной, вызов методов из navigator.clipboard вызовет ошибку
До появления navigator.clipboard использовался метод document.execCommand('copy'). Он требует немного больше манипуляций с DOM, но работает в небезопасных контекстах и даже самых старых браузерах:
javascript1// нужно создать какой-то текстовый элемент 2// и установить ему необходимое значение 3const textArea = document.createElement('textarea'); 4textArea.value = "Какой-то текст"; 5 6// убрать элемент куда-то далеко 7textArea.style.position = 'absolute'; 8textArea.style.left = '-999999px; 9 10// и добавить его в вёрстку 11document.body.prepend(textArea); 12 13// далее выделить наше поле ввода 14textArea.select(); 15 16try { 17 // и скопировать значение в буфер обмена 18 document.execCommand('copy'); 19 console.log('Текст скопирован!'); 20} catch (err) { 21 console.error('Не удалось скопировать текст: ', err); 22} 23 24// не забываем удалить элемент из вёрстки 25textArea.remove() 26
Комбинацией обоих способов можно покрыть абсолютно все кейсы во всех браузерах:
javascript1if (navigator.clipboard && window.isSecureContext) { 2 // используем navigator.clipboard 3} else { 4 // используем document.execCommand('copy') 5} 6
Статья была полезной?
Читайте также:
— 2 минуты
Как создать массив фиксированной длины?
На самом деле, способов множество. Можно создать простой массив пустых элем...
— 2 минуты
Что такое Server-Sent Events
SSE — это технология для однонаправленного соединения между сервером и клие...
— 4 минуты
Связываем React и localStorage через useSyncExternalStore
Как согласовать изменение состояния в реакте и поля в localStorage? До нед...