Я пытаюсь клонировать страницу, которая мне нужна для печати. Диалоговое окно печати должно ТОЛЬКО распечатывать выбранный элемент и его элементы.jQuery clone() не клонирует содержимое холста
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);
Это копирует всю страницу тела, клоны содержание печати я должен распечатать, то он очищает тело и заменяет его содержание должно напечатать. После этого открывается диалоговое окно печати с ТОЛЬКО печатаемыми элементами. Обходным путем может быть: Создайте весь холст после .html(printcontent)
еще раз. Поскольку clone()
только клонирует HTML, холст не был инициализирован и не имеет содержимого.
Поскольку я использую угловую директиву, я не могу просто выполнить весь «перерисовать холст». Есть ли Угловой способ, позволяющий «повторно отобразить DOM снова» или что-то в этом роде?
Если вам нужно вернуться к ручному процессу для копирования холста, см. Http://stackoverflow.com/qu estions/3318565/any-way-to-clone-html5-canvas-element-with-its-content –
@VanquishedWombat Да, но это абсолютно последнее средство. Я действительно, действительно не хочу, чтобы итерации по всем моим холстам (может быть сотни) прямо перед тем, как напечатать страницу. – MortenMoulder