При использовании html2canvas у меня есть объект stack
объектов DOM (относительный позиционированный div, который содержит разные вещи), для которого я хочу создать отдельные миниатюры. Итак, если есть десять div, я создам десять эскизов.
Некоторые из этих объектов будут вне экрана - каждый из этих divs находится в одном, охватывающем div, называемом "mainDiv". Я перебираю divs внутри mainDiv и выполняю html2canvas по каждому из них по отдельности.
Для тех, кто на экране, это работает отлично. Те, что вне экрана, не делают - они возвращаются в прошлое. Я создал обходной путь, который прокручивает объекты до вершины mainDiv
, однако это kludge и визуально непривлекательный.
Можно ли указать объект DOM, который не отображается? В идеале, я хотел бы иметь возможность указывать содержащий div и иметь html2canvas
игнорировать родительскую видимость, поэтому я могу отображать скрытые объекты, но, запрещая это, я хотел бы иметь возможность отображать объекты захвата, которые просто прокручивается экран.
Любые мысли, идеи? Спасибо!
---- Вот пример кода. В принципе, если у вас есть куча div в div, проведите через них. Я на самом деле делаю это recursively
, так что только один обрабатывается за раз с обратным вызовом, вызывающим рекурсивную функцию, поэтому он выглядит примерно так:
function recurser(anIndex, callback) {
if (anIndex == -1) {
callback();
return;
}
$(myDivs[anIndex]).html2canvas({
onrendered : function(canvas) {
var img = canvas.toDataURL();
// store the image in an array, do stuff with it, etc.
recurser(--anIndex, callback);
}
})
}
Как только рекурсивные вызовы завершены, он выполняет функцию обратного вызова, которая является функцией, которая будет обрабатывать изображения.
Опять же, все это прекрасно работает, пока объекты видны внутри прокручиваемого div, который содержит все div в #mainDiv. Однако, если какая-либо часть divs прокручивается, они отображают черный цвет. Фактически, если половина из двух divs прокручивается (верхняя половина одной, нижняя половина следующего), они оба выглядят полностью черными.