我正在尝试为浏览器检测document.x.scrollTop
支持的版本。我有以下代码:
var scrollTopElem = document.documentElement;
// Cannot do `document.documentElement.scrollTop || document.body.scrollTop` i.e. `||`
// because if the actual scrollTop is 0 right now, then I won't get the supported `document.x` type.
if (scrollTopElem.scrollTop === 0) {
var t = scrollTopElem.scrollTop;
// Add 1 to `scrollTopElem`
++scrollTopElem.scrollTop;
// Check to see if `scrollTopElem` applied the addition.
// If not, `document.documentElement.scrollTop` isn't supported
scrollTopElem = t + (1 === scrollTopElem.scrollTop--) ? scrollTopElem : document.body;
}
我在第一个函数scrollTo
中从this answer得到的。我自己添加了评论,希望是准确的。
正在使用t
的唯一时间是添加t + (documentBody || body)
。这没有意义,因为t
是一个数字,(documentBody || body)
是一个元素。那么如何在元素中添加数字呢?
我的问题是:变量t
是否必要,它是做什么的,它的重点是什么?此外,是否有更好的方法来检测支持的document.x.scrollTop
?
有没有更好的方法来检测哪种方式受支持?
W3schools执行以下操作(在最后一个示例中,名为myFunction
的函数:
document.body.scrollTop + document.documentElement.scrollTop
问题'那就是,它是一种hackish。它不是直接的解决方案,而是回答它的迂回方式。此外,在性能方面,我提到的第一种方式更好(即如果我将不止一次使用scrollTop
,我会这样做。