getBoundingClientRect()没有在窗口恢复时返回正确的值

时间:2018-03-16 14:14:50

标签: javascript jquery html dom d3.js

我有一个在windows-resize事件上运行的JS函数

在函数中,我设置了一个变量width,用于调整d3图表的大小。如果我调整窗口大小"手动" (即:拖动其中一个窗口边缘),宽度变量似乎是正确的,但是当我点击"恢复"在浏览器窗口右上角的图标中,宽度变量似乎不正确(例如,我恢复下来并且值为205,对窗口边缘的触摸最小,然后值为310)

 root.selectAll('.upload-visual')
                .each(function(d, i) {
                    var me = d3.select(this).select('.chart');
                    var width = me.node().getBoundingClientRect().width;

我已经读过,出于性能原因可以缓存getBoundingClientRect()

我的值是否被缓存,或者该函数不理解恢复操作中已发生的变化?

1 个答案:

答案 0 :(得分:1)

这与getBoundingClientRect()无关,但肯定需要注意。

window-resize函数中,立即调用包含getBoundingClientRect()的函数。我需要设置超时以确保浏览器已完成调整大小,以便返回正确的尺寸。

绝对值得了解