Khi sử dụng html2canvas, tôi có stack
đối tượng DOM (vị trí tương đối của div chứa nhiều thứ khác nhau), mà tôi muốn tạo hình thu nhỏ riêng lẻ cho. Vì vậy, nếu có mười div, tôi sẽ tạo mười hình thu nhỏ.html2canvas offscreen
Một số đối tượng này sẽ không có màn hình - trong số các div này nằm trong một div, bao gồm div được gọi là "mainDiv". Tôi lặp qua các div trong mainDiv và thực hiện các html2canvas trên mỗi cá nhân.
Đối với những người ở chế độ trên màn hình, tính năng này hoạt động tốt. Những người không có màn hình không - họ trở lại trống. Tôi tạo ra một workaround mà di chuyển các đối tượng lên trên cùng của mainDiv
, tuy nhiên đây là một kludge và trực quan không hấp dẫn.
Có thể chỉ định đối tượng DOM không hiển thị? Lý tưởng nhất, tôi muốn có thể chỉ định div chứa và có html2canvas
bỏ qua khả năng hiển thị của bố mẹ, vì vậy tôi có thể chụp màn hình các đối tượng ẩn, nhưng chặn nó, tôi muốn có thể chụp các đối tượng trên màn hình. màn.
Bất kỳ ý tưởng, ý tưởng nào? Cảm ơn!
---- Dưới đây là một số mã ví dụ. Về cơ bản, nếu bạn có một loạt các div trong div, hãy lặp lại chúng. Tôi thực sự làm recursively
này để chỉ có một được xử lý cùng một lúc, với callback gọi hàm đệ quy, vì vậy nó trông giống như sau:
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);
}
})
}
Khi các cuộc gọi đệ quy đã hoàn thành, nó thực hiện chức năng gọi lại, đó là một chức năng sẽ làm việc với các hình ảnh.
Một lần nữa, tất cả điều này hoạt động tốt miễn là các đối tượng hiển thị trong div cuộn có chứa tất cả các div trong #mainDiv. Một khi bất kỳ phần nào của các div được cuộn ra, tuy nhiên, chúng làm cho màu đen. Trong thực tế, nếu một nửa của hai div được cuộn ra (nửa trên của một, nửa dưới của tiếp theo), cả hai đều hoàn toàn đen.
Xin đính kèm một số ví dụ mã. – anataliocs
Đã thêm một số ví dụ về mã. – sneuf
@sneuf Đây có phải là trình duyệt cụ thể hoặc bạn có thấy hành vi này trên các trình duyệt không? – pseudosavant