后的研究时间,我终于找到了一个解决方案,采取元素的屏幕截图,即使origin-clean
FLAG (为了防止XSS),这就是为什么你甚至可以捕获例如谷歌地图(在我的情况)。我写了一个通用函数来获取屏幕截图。此外,您唯一需要的是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>
$("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
});
}
我不明白。你想制作呈现的DIV的屏幕截图并将其保存到图像中吗? – 2010-05-02 16:47:30
更好的问题...... **为什么你要这样做?你是否试图保存UI的“状态”以便以后重新加载?请注意.innerHTML将在IE中返回一堆无效标签汤,并且在所有浏览器中都不会包含有关外部来源(CSS和JavaScript)样式的任何信息。 – scunliffe 2010-05-02 16:55:56
虽然这是一个老问题,但有很好的理由要做。特别是在混合应用的现代时代。 – Wtower 2017-01-25 11:09:28