jQuery offset() 仅在 Safari 中返回极其不正确的值

jQuery offset() returning wildly incorrect values in Safari only

我正在尝试获取我页面上一组元素的最高偏移值。我正在 运行 遍历每个元素并记录其最高偏移值,如下所示:

$(elements).each(function() {
    var element = $(this);
    var offset = Math.floor($(element).offset().top);

    console.log(offset);
}

在 Firefox 中,这正确地给出了这些值:

458, 1023, 1625, 2274, 2746, 3072, 3398, 3823, 4388, 4930

但是在 Safari 中,我得到:

460, 718, 976, 1318, 1799, 1918, 2036, 2254, 2512, 2746

报告的第一个元素的偏移量在两个浏览器之间基本相同,但 Safari 与那里完全不同。 Safari 的其余值完全不合逻辑:例如,在 800px 高 window 中,它将第二个元素的顶部偏移报告为 718px,即使它实际上完全在屏幕外。

如果我手动测量每个元素的顶部出现在 Safari 中的位置,我得到的值与 Firefox 报告的值相同。所以页面实际上在两种浏览器中呈现相同,但 Safari 只是报告完全不同的 offset() 值。

(我也尝试过使用 position() 而不是 offset(),我看到了相同的差异:第一个值在两个浏览器中都是正确的,然后 Safari 的值完全不正确)。

很遗憾,我无法分享我的实际代码,所以如果没有,是什么导致 Safari 单独关闭这么多?

我发现如果我在元素上设置 min-height,等于元素已经呈现的高度,那么 Safari 会报告正确的 offset() 值。