scrollTop始终返回0

use*_*628 8 javascript jquery meteor

我已经尝试使用scrollTop以及scrollTop(),它总是返回0.这怎么可能,我已经尝试过这样:

Template.myHome.events({
    "click .examine": function(event){
        event.preventDefault();

        varPos = event.clientY;
        var yPos = document.body.scrollTop;
        console.log("Y coords: " + yPos);
    }
});
Run Code Online (Sandbox Code Playgroud)

以及在几个div内使用JQuery版本,包括body标签,再次给我0或null.

我只想要在用户滚动页面时获得在y轴上遍历的像素数.

Ori*_*iol 19

根据实现,滚动文档的元素可以是<html><body>.

CSSOM View介绍document.scrollingElement(参见邮件线程),它返回相应的元素:

document.scrollingElement.scrollTop;
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用window.scrollYwindow.pageYOffset.它们是别名并返回相同的值,但后者有更多的浏览器支持.

对于不支持上述任何内容的浏览器,您可以检查以下两种情况:

document.documentElement.scrollTop;
document.body.scrollTop;
Run Code Online (Sandbox Code Playgroud)

var scrollTests = document.getElementById('scrollTests');
var tests = [
  "document.body.scrollTop",
  "document.documentElement.scrollTop",
  "document.scrollingElement.scrollTop",
  "window.scrollY",
  "window.pageYOffset"
];
for(var i=0; i<tests.length; ++i) {
  var p = scrollTests.appendChild(document.createElement('p'));
  p.appendChild(document.createTextNode(tests[i] + ' = '));
  p.appendChild(document.createElement('span')).id = tests[i];
}
window.onscroll = function() {
  for(var i=0; i<tests.length; ++i) {
    try{ var val = eval(tests[i]); }
    catch(err) { val = '[Error]'; }
    document.getElementById(tests[i]).innerHTML = val;
  }
};
Run Code Online (Sandbox Code Playgroud)
#scrollTests {
  position: fixed;
  top: 0;
}
body:after {
  content: '';
  display: block;
  height: 999999px;
}
Run Code Online (Sandbox Code Playgroud)
<div id="scrollTests"></div>
Run Code Online (Sandbox Code Playgroud)