Javascript GetBoundingClientRect不';我不能在窗外工作

Javascript GetBoundingClientRect不';我不能在窗外工作,javascript,css,coordinates,getcomputedstyle,getboundingclientrect,Javascript,Css,Coordinates,Getcomputedstyle,Getboundingclientrect,我正在制作一个脚本,可以在帖子中测量距离。例如,如果我有三篇帖子: 帖子1:两行文字,然后是我想看到的图像 帖子2:就是我想看到的图片 帖子3:我想看到的图片后面有两行 我之所以想要这个,是因为我认为Tumblr在他们的描述中显示了太多的废话。我正在制作一个chrome扩展,它将裁剪图像周围的所有废话,这样你就可以少滚动。在每篇文章上都会弹出一个按钮来查看整个文章。 到今天为止,它工作得很好!使用getBoundingClientRect我可以获得窗口的顶部、左侧、底部和右侧偏移。只有一个问

我正在制作一个脚本,可以在帖子中测量距离。例如,如果我有三篇帖子:

  • 帖子1:两行文字,然后是我想看到的图像
  • 帖子2:就是我想看到的图片
  • 帖子3:我想看到的图片后面有两行
我之所以想要这个,是因为我认为Tumblr在他们的描述中显示了太多的废话。我正在制作一个chrome扩展,它将裁剪图像周围的所有废话,这样你就可以少滚动。在每篇文章上都会弹出一个按钮来查看整个文章。

到今天为止,它工作得很好!使用
getBoundingClientRect
我可以获得窗口的顶部、左侧、底部和右侧偏移。只有一个问题。我无法立即对页面上的所有帖子执行此操作,因为如果一篇帖子距离文档的可见部分(即您在浏览器中查看的部分)700px或更大,则GBCR提供的所有值都将为0

这些值无效,并且可能为零,因为帖子未在屏幕上呈现。如果我滚动,我可以让我的扩展尝试获取维度,这样当一篇文章进入窗口的可见部分时,它就会被处理。但我不喜欢这个。这意味着每次用户滚动时都必须触发我的JS函数,这是一种糟糕的做法。我更愿意在加载dom时启动函数,因此如果添加了新的帖子,函数将被触发



我想问你的问题是:是否有一个解决方法来确保当文章没有呈现在屏幕上时GBCR功能正常工作。或者有没有一种方法可以让我通过
getComputedStyle
(无需遍历所有元素)获得元素的坐标呢?

好问题!阅读整个页面并计算页面上元素的位置(基于文档),而不考虑“窗口”。我发现了offsettop offsetleft,在这一页上有一种计算文档位置的方法--我将继续四处窥探。这确实是一种可能的方法。但是,它必须向上移动,这意味着它比GBCR慢