J'ai une formule qui calcule une valeur. Cette valeur que je veux insérer sur une feuille Excel. Pour le rendre confortable à l'utilisateur, je souhaite le mettre au presse-papiers automatiquement.
J'essaie de faire mes premiers pas dans JS et de rencontrer ce problème (probablement) très simple. Mais toutes les méthodes que j'ai trouvées sont liées aux valeurs brutes des étiquettes d'entrée HTML. Je n'ai jamais vu de fonctions de copie à presse-papier à partir de valeurs créées dans JS. P>
3 Réponses :
const copyToClipboard = str => { const el = document.createElement('textarea'); // Create a <textarea> element el.value = str; // Set its value to the string that you want copied el.setAttribute('readonly', ''); // Make it readonly to be tamper-proof el.style.position = 'absolute'; el.style.left = '-9999px'; // Move outside the screen to make it invisible document.body.appendChild(el); // Append the <textarea> element to the HTML document const selected = document.getSelection().rangeCount > 0 // Check if there is any content selected previously ? document.getSelection().getRangeAt(0) // Store selection if found : false; // Mark as false to know no selection existed before el.select(); // Select the <textarea> content document.execCommand('copy'); // Copy - only works as a result of a user action (e.g. click events) document.body.removeChild(el); // Remove the <textarea> element if (selected) { // If a selection existed before copying document.getSelection().removeAllRanges(); // Unselect everything on the HTML document document.getSelection().addRange(selected); // Restore the original selection } };
Essayez comme ça.
p>
function copyToClipboard(str) { var el = document.createElement('textarea'); // Set value (string to be copied) el.value = str; // Set non-editable to avoid focus and move outside of view el.setAttribute('readonly', ''); el.style = {position: 'absolute', left: '-9999px'}; document.body.appendChild(el); // Select text inside element el.select(); // Copy text to clipboard document.execCommand('copy'); // Remove temporary element document.body.removeChild(el); }; var EEFactor = 1*1; copyToClipboard(EEFactor);