後的研究時間,我終於找到了一個解決方案,採取元素的屏幕截圖,即使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