Я читаю chrome коды расширения для захвата полного снимка экрана, и вот фрагмент кодов, которые я не могу понять, логи c позади (https://github.com/erichua23/prj/blob/676e98366c6a25c56b2e342a3aecec76ae076391/screenshot/background.js#L63):
chrome.tabs.captureVisibleTab(this.tabId, { format: "png" }, function(img) {
var blockImg = new Image();
var canvas = self.canvas;
if (Capturer.yPos + Capturer.clientHeight >= Capturer.scrollHeight) {
blockImg.onload = function() {
var ctx = canvas.getContext("2d");
var y = Capturer.clientHeight - Capturer.scrollHeight % Capturer.clientHeight;
ctx.drawImage(blockImg, 0, 0, width, height, 0, self.yPos - y, width, height);
Capturer.postImg();
};
} else {
blockImg.onload = function() {
var ctx = canvas.getContext("2d");
ctx.drawImage(blockImg, 0, 0, width, height, 0, Capturer.yPos, width, height);
Capturer.yPos += Capturer.clientHeight;
self.scrollPage(self.tabId, 0, Capturer.clientHeight);
};
}
blockImg.src = img;
});
Зачем ставить пустое изображение на холсте? И как получается скриншот? Спасибо за ваше время и опыт.