检测对scrollTop的浏览器支持

时间:2016-09-07 22:27:22

标签: javascript cross-browser scrolltop

我正在尝试为浏览器检测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,我会这样做。

0 个答案:

没有答案