滚动y位置在我的情况下不起作用

时间:2015-01-18 02:14:48

标签: javascript scroll

        var get_scroll = function(){
    y = 0;
  if( document.body && ( document.body.scrollTop ) ) {

        y = document.body.scrollTop;
    }

    return y;
};

它始终返回0,上面的代码出了什么问题?

我做console.log(get_scroll());

3 个答案:

答案 0 :(得分:0)

取决于您是否已声明,文档的滚动位置的访问方式不同。如果没有doctype,即quirks模式,这个位置将被普遍检索为:

document.body.scrollTop;

在标准模式下,这有点棘手。对于IE和Firefox,以下代码都可以:

document.documentElement.scrollTop;

但是,基于Webkit的浏览器(如Chrome)仍会填充body.scrollTop值。因此,您必须选择更大的两个:

function get_scroll(){
    var top=document.documentElement.scrollTop;
    if (top<document.body.scrollTop) top=document.body.scrollTop;
    return top;
}

具有讽刺意味的是,怪癖模式有时会更有效地运作&#34;标准&#34;比标准模式?

答案 1 :(得分:0)

我不了解if条件,但没有它,我获得了成功的结果(使用Chrome):

var get_scroll = function(){
  y = document.body.scrollTop;
  return y;
}

console.log(get_scroll());

答案 2 :(得分:0)

仔细检查:

if( document.body && ( document.body.scrollTop ) )

这对我没有任何意义。 document.body不会返回true / false值,document.body.scrollTop也不会。尝试将其更改为两个相似值的比较。如果您将其设置为:

var get_scroll = function(){
  y = 0;
  if( 1==1 ) {
     y = document.body.scrollTop;
  }
  return y;
};

它应该有用。