我找到了经典的MDN 公式来检查内容是否已滚动到底部,
element.scrollHeight - element.scrollTop === element.clientHeight
Run Code Online (Sandbox Code Playgroud)
不再适用于所有情况。例如,如果您将MDN 上的演示页面的内容比例更改为大于 100%,您将不会获得正确的结果。发生这种情况是因为现在浏览器在元素上使用亚像素精度。特别scrollTop
是现在不是 100% 的比例是小数值。实际上,问题的发生是因为===
上面公式中的符号。
那么最简单但仍然可靠的解决方案是什么?
我当前的解决方案:
\nfunction 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