Aquí está mi js:
try{ let input = document.createElement("input") input.style="display:none; white-space: pre-wrap" input.value = message document.body.appendChild(input) var copyText = input /* Select the text field */ copyText.select(); copyText.setSelectionRange(0, 99999); /* For mobile devices */ /* Copy the text inside the text field */ navigator.clipboard.writeText(copyText.value); /* Alert the copied text */ alert("Copied the text: " + copyText.value); document.body.innerHTML+=copyText.value } catch(e){console.log(e)}Creo que debería funcionar, pero solo copia cadenas de una sola línea. Cuando intento copiar una cadena de varias líneas, como
let message = `Hello What is your name? `lo pego como
`Hello What is your name?`¿Por qué no permite cadenas de varias líneas?
El value de una input no puede tener saltos de línea. Si asigna una cadena que contiene saltos de línea a un value de input , los saltos de línea se eliminan:
const input = document.createElement("input"); input.type = "text"; const original = "one\ntwo"; input.value = original; console.log("original: " + JSON.stringify(original)); console.log("value: " + JSON.stringify(input.value)); En lugar de pasarlo a través de una input , simplemente pase message directamente a writeText . (O si hay alguna razón particular para pasarlo primero a través de un elemento, use un textarea en lugar de una input ).