Die meisten vorgeschlagenen Antworten erzeugen ein zusätzliches temporäres verstecktes Eingabefeld(er). Da die meisten Browser heutzutage div-Inhalte bearbeiten können, schlage ich eine Lösung vor, die keine versteckten Elemente erzeugt, Textformatierung beibehält und reinen JavaScript oder die jQuery-Bibliothek verwendet.
Hier ist eine minimalistische Skelettimplementierung, die mit den wenigsten Codezeilen erstellt wurde, die ich mir vorstellen konnte:
//Reine Javascript-Implementierung:
document.getElementById("copyUsingPureJS").addEventListener("click", function() {
copyUsingPureJS(document.getElementById("copyTarget"));
alert("Text mit reinem JavaScript in die Zwischenablage kopiert");
});
function copyUsingPureJS(element_id) {
element_id.setAttribute("contentEditable", true);
element_id.setAttribute("onfocus", "document.execCommand('selectAll',false,null)");
element_id.focus();
document.execCommand("copy");
element_id.removeAttribute("contentEditable");
}
//Jquery:
$(document).ready(function() {
$("#copyUsingJquery").click(function() {
copyUsingJquery("#copyTarget");
});
function copyUsingJquery(element_id) {
$(element_id).attr("contenteditable", true)
.select()
.on("focus", function() {
document.execCommand('selectAll', false, null)
})
.focus()
document.execCommand("Copy");
$(element_id).removeAttr("contenteditable");
alert("Text mit jQuery in die Zwischenablage kopiert");
}
});
#copyTarget {
width: 400px;
height: 400px;
border: 1px groove gray;
color: navy;
text-align: center;
box-shadow: 0 4px 8px 0 gray;
}
#copyTarget h1 {
color: blue;
}
#copyTarget h2 {
color: red;
}
#copyTarget h3 {
color: green;
}
#copyTarget h4 {
color: cyan;
}
#copyTarget h5 {
color: brown;
}
#copyTarget h6 {
color: teal;
}
#pasteTarget {
width: 400px;
height: 400px;
border: 1px inset skyblue;
}
Überschrift 1
Überschrift 2
Überschrift 3
Überschrift 4
Überschrift 5
Überschrift 6
Textformatierung beibehalten
Mit reinem JavaScript kopieren
Mit jQuery kopieren
Hier einfügen, um das Ergebnis zu sehen