检查用户是否在亚像素精度时代滚动到底部

Kon*_*nin 7 javascript dom

我找到了经典的MDN 公式来检查内容是否已滚动到底部,

element.scrollHeight - element.scrollTop === element.clientHeight
Run Code Online (Sandbox Code Playgroud)

不再适用于所有情况。例如,如果您将MDN 上的演示页面的内容比例更改为大于 100%,您将不会获得正确的结果。发生这种情况是因为现在浏览器在元素上使用亚像素精度。特别scrollTop是现在不是 100% 的比例是小数值。实际上,问题的发生是因为===上面公式中的符号。

那么最简单但仍然可靠的解决方案是什么?

Kon*_*nin 6

我当前的解决方案:

\n
function isContentScrolledToBottom(element) {\n    const rest = element.scrollHeight - element.scrollTop;\n    return Math.abs(element.clientHeight - rest) < 1;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

它检查元素是否以 \xc2\xb11 精度滚动到底部。

\n