jQuery offset() 仅在 Safari 中返回非常不正确的值

标签 jquery css safari position offset

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

$(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 高窗口中,它报告第二个元素的顶部偏移为 718px,即使它实际上完全在屏幕外。

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

(我也尝试过使用 position() 而不是 offset(),我看到了同样的差异:第一个值在两个浏览器中都是正确的,并且那么 Safari 的值就完全关闭了)。

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

最佳答案

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

关于jQuery offset() 仅在 Safari 中返回非常不正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31575133/

相关文章:

html - 样式化文本输入插入符

ssl - 在 Safari 浏览器上,即使页面受 HTTPS 保护,也会出现错误 : "This form is not secure. Are you sure you want to submit it?",

jQuery .animation 延迟问题

javascript - 如何让 AngularJS 忽略 ajax OPTIONS 方法?

javascript - 如何在页面加载后弹出加载秒

JavaScript 动画 - 在到达外部 div 边界时停止内部 div 移动

iphone - CSS 投影没有显示在 iPhone 上……?

jquery - 为什么 Safari 不喜欢 JQUERY 中的 .trim() ?

javascript - jquery ajax请求如何获得成功?

javascript - 一段时间后更改线性渐变背景