var get_scroll = function(){
y = 0;
if( document.body && ( document.body.scrollTop ) ) {
y = document.body.scrollTop;
}
return y;
};
它始终返回0,上面的代码出了什么问题?
我做console.log(get_scroll());
答案 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;
};
它应该有用。