我正在尝试获取 chrome 扩展中特定元素的图像/屏幕截图,我遇到的问题是,当我从chrome.tabs.captureVisibleTab
结果图像中裁剪结果时,如果页面放大/缩小(通过View -> Zoom In
)。
特别的问题是,由于页面被缩放,我从内容脚本获得的偏移量/大小没有按比例放大/缩小,所以我最终裁剪了屏幕截图的错误区域
有没有办法获取/设置标签当前缩放级别?或者检测正确的元素大小/位置?
我在谷歌上找到的所有东西都指向不,但是很棒的截图让这项工作以某种方式起作用
背景.js:
chrome.tabs.captureVisibleTab(tab.windowId, { format: "png" }, function(dataUrl) {
console.log('got capture');
if (!canvas) {
canvas = document.createElement("canvas");
document.body.appendChild(canvas);
console.log('created canvas');
}
var image = new Image();
image.onload = function() {
console.log('image loaded, cropping');
canvas.width = dimensions.width;
canvas.height = dimensions.height;
var context = canvas.getContext("2d");
context.drawImage(image,
dimensions.left, dimensions.top,
dimensions.width, dimensions.height,
0, 0,
dimensions.width, dimensions.height
);
console.log('image created');
var croppedDataUrl = canvas.toDataURL("image/png");
chrome.tabs.create({
url: croppedDataUrl,
windowId: tab.windowId
});
}
image.src = dataUrl;
});
内容脚本:
console.log('getting dimensions')
var dimensions = {
top: -window.scrollY + $(element).offset().top,
left: -window.scrollX + $(element).offset().left,
width: $(element).width(),
height: $(element).height()
};
console.log('sending dimensions', dimensions);
sendResponse(dimensions);