2017-10-02 4 views
1

Der komplette Inhalt eines <div>Wie Markup kopieren - nicht nur Klartext - in die Zwischenablage kostenlos 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> 

sollte in die Zwischenablage mit Legacy kopiert werden mit diesem Code

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

(Damit der execCommand funktioniert, muss der Aufruf über einen Ereignis-Listener ausgeführt werden)

Aber nur der Textinhalt ist kopiert. Ist es möglich, den Markup-Code (die <i> und <b> Tags) ohne auf die Legacy-Firefox-Zwischenablage Add-on zu kopieren, auch?

Antwort

2

Ich löste dieses Problem mit einem falschen Textarea-Element, das meinen benutzerdefinierten Text in die Zwischenablage kopierte.

So etwas sollte helfen:

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

Nizza Umweg - wenn es keine andere Möglichkeit gibt, wäre dies eine mögliche Lösung sein. Vielen Dank. –

Verwandte Themen