getBoundingClientRect不准确

时间:2016-07-12 10:07:32

标签: javascript jquery viewport getboundingclientrect

我的目标是在视口之前注入一个元素(取决于延迟数据属性,在元素位于视口之前默认为100px)。我是如何使用getBoundingClientRect();

const LAZY_THRESHOLD_DEFAULT = 100;
TestBox.isOnScreen = function(element) {
    const reservedDistance = parseInt(element.getAttribute(THRESHOLD) || LAZY_THRESHOLD_DEFAULT, 10);
    const rect = el.getBoundingClientRect();
    return (
        rect.top >= 0 &&
        rect.left >= 0 &&
        rect.bottom <= $(window).height() &&
        rect.right <= $(window).width()
}

我像这样使用它

$(window).scroll(function() {
  if (TestBox.isOnScreen(element)) {
    // Inject the element
  }
});

我发现的一件大事是(我在$(window).scrollTop()时控制台将TestBox.isOnScreen(element)与控制台日志一起记录:检测到元素在视口上的时刻并不总是准确的。 14px,5px或完全正常。

有没有人遇到过这个问题?或者我实施错了吗?

0 个答案:

没有答案