Javascript 获取滚动y位置在我的情况下不起作用
它总是返回0,上面的代码怎么了Javascript 获取滚动y位置在我的情况下不起作用,javascript,scroll,Javascript,Scroll,它总是返回0,上面的代码怎么了 我做console.logget\u滚动 取决于您是否已声明,文档的滚动位置以不同方式访问。如果没有doctype,即quirks模式,则该位置将被普遍检索为: var get_scroll = function(){ y = 0; if( document.body && ( document.body.scrollTop ) ) { y = document.body.scrollTop;
我做console.logget\u滚动 取决于您是否已声明,文档的滚动位置以不同方式访问。如果没有doctype,即quirks模式,则该位置将被普遍检索为:
var get_scroll = function(){
y = 0;
if( document.body && ( document.body.scrollTop ) ) {
y = document.body.scrollTop;
}
return y;
};
在标准模式下,这有点棘手。对于IE和Firefox,以下代码都可以:
document.body.scrollTop;
但是,基于Webkit的浏览器(如Chrome)仍然填充body.scrollTop值。因此,您必须选择较大的两个:
document.documentElement.scrollTop;
怪癖模式有时比标准模式更标准,这不是很讽刺吗?我不理解if条件,但没有它,我使用Chrome获得了成功的结果:
function get_scroll(){
var top=document.documentElement.scrollTop;
if (top<document.body.scrollTop) top=document.body.scrollTop;
return top;
}
请仔细检查:
var get_scroll = function(){
y = document.body.scrollTop;
return y;
}
console.log(get_scroll());
这对我来说毫无意义。document.body不会返回真/假值,document.body.scrollTop也不会返回。尝试将其更改为两个相似值的比较。如果将其设置为:
if( document.body && ( document.body.scrollTop ) )
它应该可以工作。我甚至试过console.logwindow.scrollY;它也给了我零分。我滚动并启动它,为什么它返回零?哦,这不是IE的。浏览器有不同的渲染模式。我已经修改了答案以适应您的函数调用。您可以使用浏览器中的开发人员工具查看填充了哪个DOM对象。尝试document.body.scrollTop和document.documentElement.scrollTop。看看哪一个返回的值更高。原始问题中的条件语句对于检测属性值是否存在是必需的。同样,使用doctype和not的不同呈现模式将以不同的方式填充DOM结构。我发现它是“-webkit overflow scrolling”:“touch”破坏了它。嘿。现在你知道了:-
var get_scroll = function(){
y = 0;
if( 1==1 ) {
y = document.body.scrollTop;
}
return y;
};