Javascript 如何在CSS zoom存在的情况下使用getBoundingClientRect()获取屏幕坐标?

Javascript 如何在CSS zoom存在的情况下使用getBoundingClientRect()获取屏幕坐标?,javascript,html,css,selenium,Javascript,Html,Css,Selenium,我试图在屏幕坐标中使用Javascript找到HTML元素的边界框,这样我就可以使用外部工具(例如ffmpeg的x11grab屏幕录制功能)自己拍摄该元素的屏幕截图/视频 如果没有CSS缩放,那么我可以找到元素elem的边界框,如下所示: 让viewportTop=window.screenY+(window.outerHeight-window.innerHeight); 让viewportLeft=window.screenX; 设rect=elem.getBoundingClientRec

我试图在屏幕坐标中使用Javascript找到HTML元素的边界框,这样我就可以使用外部工具(例如
ffmpeg
x11grab
屏幕录制功能)自己拍摄该元素的屏幕截图/视频

如果没有CSS缩放,那么我可以找到元素
elem
的边界框,如下所示:

让viewportTop=window.screenY+(window.outerHeight-window.innerHeight);
让viewportLeft=window.screenX;
设rect=elem.getBoundingClientRect();
让宽度=矩形宽度;
让高度=垂直高度;
left=viewportLeft+rect.left;
让top=viewportTop+rect.top;
然后,我可以使用这些
宽度、高度、左侧、顶部
坐标在浏览器窗口中记录所需的框

但是,有时我希望增加元素的缩放比例,以便于查看:

elem.style.zoom=“2”;
完成此操作后,
elem.getBoundingClientRect()
返回的边界框现在按比例缩小为
2
。如果使用上述方法计算录制边界框,它将不再与元素对齐

我已经成功地调用了
window.getComputedStyle(elem,null).getPropertyValue(“zoom”)
,解析了缩放编号,并使用它来更正边界框。然而,这并不是一个完美的解决方案——如果我想将
document.body
缩放一定量,并将目标元素缩放一定量,该怎么办

因此,我想知道是否有一种通用的方法可以将坐标从
elem.getBoundingClientRect
转换为屏幕坐标,即使CSS缩放应用于各种元素时也能正常工作

  • 我考虑过使用浏览器自己的缩放而不是CSS缩放,但我不想这样做,因为我正在使用Selenium来设置这些东西,而且我看到了关于使用Selenium调整浏览器缩放的可怕警告