我的目标是在视口之前注入一个元素(取决于延迟数据属性,在元素位于视口之前默认为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或完全正常。
有没有人遇到过这个问题?或者我实施错了吗?