即使在滚动时,document.body.scrollTop在IE中始终为0

Ton*_*ich 62 html css

我在移动鼠标时在状态栏中显示document.body.scrollTop的值.IE中的值始终为0.为什么总是0?是否有另一种方法可以获得滚动条移动了多少?

Nic*_*ver 115

您可能想在IE中尝试使用较旧的doctype:

var top = (document.documentElement && document.documentElement.scrollTop) || 
              document.body.scrollTop;
Run Code Online (Sandbox Code Playgroud)

  • 你以为你可以做一个简单的|| 操作?查克特斯塔.如果您尝试访问documentElement的属性.scrollTop,它将会破坏.最佳(阅读:非爆炸性)解决方案:`var top =(document.documentElement && document.documentElement.scrollTop)|| 的document.body.scrollTop;` (12认同)
  • 这可以缩写为`var top = document.documentElement.scrollTop || 的document.body.scrollTop;` (2认同)

ija*_*vid 15

此函数提供了读取滚动偏移量的跨浏览器实现:

function posTop() {
            return typeof window.pageYOffset != 'undefined' ? window.pageYOffset: document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop? document.body.scrollTop:0;
        }
Run Code Online (Sandbox Code Playgroud)


Viv*_*ath 10

根据DOCTYPE,您必须使用document.body.scrollTopdocument.documentElement.scrollTop.你试过第二个吗?

你可以这样做:

var scrollTop = document.documentElement ? document.documentElement.scrollTop :
                                           document.body.scrollTop;
Run Code Online (Sandbox Code Playgroud)

我在研究你的问题时遇到了这些链接:

这可能会帮助你多一点.