我有一个网页,其中有一个表单元素(其ID已知),并且在表单内部有多个DIV,并且每个div的位置可能会更改.
我想做的是:
a)保存此表单的当前状态
// var currentForm=document.forms['myFrm'].innerHTML;
可能就够了......
b)将每个DIV的最新位置保存或导出整个表格到图像文件.
//如何保存/导出currentForm的javascript var到图像文件是关键问题.
任何帮助/指针将不胜感激.
有一个名为Domvas的库可以做你想要的.
它使您能够获取任意DOM内容并将其绘制到您选择的Canvas中.
之后,从canvas元素导出图像应该非常简单:
var canvas = document.getElementById("mycanvas"); var img = canvas.toDataURL("image/png"); document.write('');
经过数小时的研究,我终于找到了一种解决方案,可以对元素进行屏幕截图,即使origin-clean
设置了FLAG(以防止XSS),这也是为什么您甚至可以捕获Google Maps的原因。我写了一个通用函数来获取屏幕截图。另外,您唯一需要的就是html2canvas库(https://html2canvas.hertzen.com/)。
例:
getScreenshotOfElement($("div#toBeCaptured").get(0), 0, 0, 100, 100, function(data) { // in the data variable there is the base64 image // exmaple for displaying the image in an $("img#captured").attr("src", "data:image/png;base64,"+data); }
请记住console.log()
,alert()
如果图像尺寸很大,则不会生成输出。
功能:
function getScreenshotOfElement(element, posX, posY, width, height, callback) { html2canvas(element, { onrendered: function (canvas) { var context = canvas.getContext('2d'); var imageData = context.getImageData(posX, posY, width, height).data; var outputCanvas = document.createElement('canvas'); var outputContext = outputCanvas.getContext('2d'); outputCanvas.width = width; outputCanvas.height = height; var idata = outputContext.createImageData(width, height); idata.data.set(imageData); outputContext.putImageData(idata, 0, 0); callback(outputCanvas.toDataURL().replace("data:image/png;base64,", "")); }, width: width, height: height, useCORS: true, taintTest: false, allowTaint: false }); }