在使用html2canvas时,我有一组DOM对象(相对定位的div包含各种元素),我希望为每个对象创建单独的缩略图。因此,如果有十个div,则会创建十个缩略图。
其中一些对象将超出屏幕 - 每个div都在一个名为“mainDiv”的包含div中。我遍历mainDiv中的div,并逐个执行html2canvas。
对于那些在屏幕上的对象,这很好用。而对于超出屏幕的对象,则会生成空白的缩略图。我创建了一个解决方法,将这些对象滚动到mainDiv的顶部,但这是一种不完美的方法并且不美观。
是否可能指定一个不可见的DOM对象?理想情况下,我想能够指定一个包含div,并让html2canvas忽略父容器的可见性,以便我可以截取隐藏的对象,但如果无法实现这一点,我希望能够截取只是滚动屏幕而已的对象。
有任何想法或建议吗?谢谢!
----以下是一些示例代码。基本上,如果你有一个包含多个div的div,请遍历它们。我实际上使用递归方式进行遍历,以便每次只处理一个div,回调函数调用递归函数,因此看起来像这样:
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);
}
})
}
递归调用完成后,它会执行回调函数。回调函数是一个将对图像进行操作的函数。
只要对象在包含#mainDiv中所有div的滚动div内可见,所有这些都能正常工作。但是一旦任何部分的div被滚动出去,它们就会变成黑色。实际上,如果两个div的一半都被卷走了(一个的顶部一半,下一个的底部一半),它们都会完全变成黑色。