編輯:此方法僅適用於Firefox擴展。
您可以使用HTML5 canvas,Firefox'drawWindow和toDataURL方法。例如:
var capture = function() {
var root = document.documentElement;
var canvas = document.createElementNS('http://www.w3.org/1999/xhtml', 'html:canvas');
var context = canvas.getContext('2d');
var selection = {
top: 0,
left: 0,
width: root.scrollWidth,
height: root.scrollHeight,
};
canvas.height = selection.height;
canvas.width = selection.width;
context.drawWindow(
window,
selection.left,
selection.top,
selection.width,
selection.height,
'rgb(255, 255, 255)'
);
return canvas.toDataURL('image/png', '');
};
可以調整top
,left
,width
和height
只捕捉網頁的一部分。
結果是一個data URI字符串。你可以把它發送到您的服務器,或者借鑑其他畫布:
var canvas = document.getElementById('captured');
var ctx = canvas.getContext('2d');
var image = new Image();
image.src = capture();
// the image is not immediately usable
$(image).load(function() { // jquery way
canvas.width = image.width;
canvas.height = image.height;
ctx.drawImage(image, 0, 0);
});
你的插件可能使用這種方法。你也可以檢查它的源代碼。
編輯:要將其與jQuery發送到你的服務器,你可以做這樣的事情:
$("#send-capture-button").click(function() {
$.post("/url-to-send-image-to", {image_data: capture()})
});
在服務器端,你就必須對數據進行解碼URL。
哇,我會玩弄這個,看看我不能得到它做我需要的東西。感謝非常深刻的答案!這使用HTML5,所以只有較新的瀏覽器才能使用這種功能? – 2011-05-10 17:20:58
您可以查看http://caniuse.com/#search=canvas,但我不知道「canvas基本支持」是否包含此方法。 – 2011-05-10 17:50:18
在我準備實施這個腳本之前,我花了一段時間。我不確定如何實現它,但是如何觸發圖像創建,以及將生成的圖像顯示在哪裏? – 2011-05-18 16:35:19