2017-10-02 6 views
1

Le contenu complet d'un <div>Comment copier le balisage - texte non tout simplement - le presse-papiers en utilisant l'héritage libre JavaScript

<div id="myElement"> 
    Mary had a little <b>lamb</b>, its <i>fleece</i> was white as snow. Everywhere that mary went, the lamb was sure to go. 
</div> 

doit être copié dans le presse-papier en utilisant ce code

const copyAll = document.querySelector("myElement"); 
window.getSelection().selectAllChildren(copyAll); 
document.execCommand("Copy"); 
window.getSelection().removeAllRanges(); 

(Pour que execCommand fonctionne, l'appel doit être exécuté via un écouteur d'événement)

Mais seul le contenu textuel est copié. Est-il possible de copier le code de balisage (les balises <i> et <b>) sans en utilisant également le module complémentaire de presse-papiers de Firefox?

Répondre

2

Je résolvais ce problème en utilisant un faux élément textarea copiant mon texte personnalisé dans le presse-papier.

Quelque chose comme cela devrait aider:

const copyText = document.querySelector("myElement").innerHTML; 
copyToClipboard(copyText); 


function copyToClipboard(message) { 
     let textArea = document.createElement("textarea"); 
     textArea.value = message; 
     document.body.appendChild(textArea); 
     textArea.select(); 
     document.execCommand("copy"); 
     document.body.removeChild(textArea); 
    } 
+0

détour Nice - s'il n'y a pas d'autre option, ce serait une solution possible. Je vous remercie. –