Ich versuche eine Seite zu klonen, die ich zum Drucken brauche. Der Druckdialog sollte NUR das ausgewählte Element und seine Elemente ausdrucken.jQuery clone() klont keinen Inhalt von Canvas
https://jsfiddle.net/ctqdhta7/
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
ctx.font = "30px Arial";
ctx.fillText("Hello World", 10, 50);
setTimeout(function() {
var restorepage = $('body').html();
var printcontent = $("#hello").clone();
$('body').empty().html(printcontent);
window.print();
$('body').html(restorepage);
}, 1000);
Dieser kopiert die gesamte Körper Seite, den Inhalt des Drucks Klont ich heraus gedruckt werden soll, dann leert sie den Körper und ersetzt sie mit dem Inhalt sollte es drucken. Danach öffnet es den Druckdialog mit NUR den druckbaren Elementen. Eine Abhilfe könnte sein: Erstellen Sie die gesamte Leinwand nach .html(printcontent)
noch einmal. Da clone()
nur den HTML-Code klont, wurde der Zeichenbereich nicht initialisiert und enthält keinen Inhalt.
Da ich eine Angular-Direktive verwende, kann ich nicht einfach das ganze "Canvas neu zeichnen". Gibt es einen Winkelweg, der es möglich macht, das DOM erneut zu rendern oder so?
Wenn Sie zum manuellen Kopieren von Arbeitsflächen zurückkehren müssen, siehe http://stackoverflow.com/qu estrations/3318565/any-way-to-clone-html5-leinwandelement-with-it-content –
@VanquishedWombat Ja, aber das ist der absolute letzte Ausweg. Ich möchte wirklich, wirklich nicht alle meine Leinwände durchlaufen (könnte Hunderte sein), kurz bevor ich die Seite drucke. – MortenMoulder