Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取滚动y位置在我的情况下不起作用_Javascript_Scroll - Fatal编程技术网

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

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;

它总是返回0,上面的代码怎么了


我做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;
};