Así que estoy usando una MacBook y tengo un botón de copia que copia una entrada de texto generada en un campo de texto.
Este es el código:
document.querySelector("#btnCopy").addEventListener('click', copy); async function copy(){ var text = document.querySelector("#docNumber"); text.select(); navigator.clipboard.writeText(text.value) }Cuando reviso el portapapeles no se ha copiado nada.
¿Alguna sugerencia de lo que está pasando?
Gracias, comunidad.
El siguiente enfoque funciona en Chrome, Firefox, Internet Explorer y Edge, y en versiones recientes de Safari (la compatibilidad con copias se agregó en la versión 10, que se lanzó en octubre de 2016).
document.querySelector("#btnCopy").addEventListener('click', copyToClipboard); function copyToClipboard() { let text = document.querySelector("#docNumber"); text.select(); text = text.value; if (window.clipboardData && window.clipboardData.setData) { // IE: prevent textarea being shown while dialog is visible return window.clipboardData.setData("Text", text); } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) { var textarea = document.createElement("textarea"); textarea.textContent = text; // Prevent scrolling to bottom of page in MS Edge textarea.style.position = "fixed"; document.body.appendChild(textarea); textarea.select(); try { // Security exception may be thrown by some browsers return document.execCommand("copy"); } catch (ex) { console.warn("Copy to clipboard failed.", ex); return false; } finally { document.body.removeChild(textarea); } } } <input id="docNumber" type="text" value="Clipboard text test"> <button id="btnCopy">Copy to Clipboard</button>Creo que necesitas asignar el texto seleccionado a algo.
let t = text.select();o mejor aún:
navigator.clipboard.writeText(text.select())