一旦页面的滚动位置达到一定高度,我就会尝试做某事。但是,无论我滚动多远,scrollTop()
都会返回0或null
。这是我用来检查scrollTop()
值的帮助功能:
$('body').click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});
我已尝试将scrollTop()
附加到$('body')
,$('html')
,当然还有$(window)
,但没有任何变化。
有什么想法吗?
答案 0 :(得分:105)
出于某种原因,从我的html和body标签中删除'height:100%'解决了这个问题。
我希望这有助于其他人!
答案 1 :(得分:38)
我在滚动= 0时遇到了同样的问题:
document.body.scrollTop
下次使用
document.scrollingElement.scrollTop
编辑01.06.2018
如果您使用event
,那么您的对象在document
或target
中有srcElement
个元素。 这是一个表格,显示了不同浏览器的滚动操作。
正如您所见,Firefox和IE没有srcElement
且IE 11不支持scrollingElement
。
答案 2 :(得分:6)
我的解决方案,在尝试了上面的一些内容后,并没有涉及更改任何CSS:
var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )
适用于Chrome,Firefox,IE和Edge的最新版本。
答案 3 :(得分:5)
我只是为那些可能犯同样错误的人添加了一个附加组件。我的代码如下:
var p = $('html,body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
此代码适用于所有浏览器,但chrome和safari等webkits浏览器除外,因为<html>
标记的scrollTop值始终为零或为null。
其他浏览器会忽略它,而webkit的浏览器则不会。
最简单的解决方法就是从您的代码中移除html标签和Voila:
var p = $('body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
答案 4 :(得分:3)
从html和body标签中删除height: 100%;
可以解决此问题。
原因是您可能已将100%设置为html和body元素的height属性值。如果将html和body元素的height属性设置为100%,它们的高度将等于文档的高度。
答案 5 :(得分:1)
有同样的问题。 scrollTop()适用于某些块而不是文档或正文。 要使此方法有效,您应该为块添加高度和溢出样式:
#scrollParag {
height: 500px;
overflow-y: auto;
}
然后:
var scrolParag = document.getElementById('scrollParag');
alert(scrolParag.scrollTop); // works!
答案 6 :(得分:1)
var bodyScrollTop = Math.max(document.scrollingElement.scrollTop, document.documentElement.scrollTop)
应该在现代浏览器上工作。
答案 7 :(得分:0)
顺便说一下,你似乎应该使用
if(preg_match('/^[a-z0-9\._\-\@]+$/i', $email) === 0) {
echo 'not valid';
}
而不是
$("body").scrollTop()
这就是我被困的原因。
答案 8 :(得分:0)
Scroll Top总是为我返回0。我用它来将焦点带到页面上的特定元素。我用另一种方法来做到这一点。
的document.getElementById( “elementID”)scrollIntoView();
在移动设备,平板电脑和桌面设备上为我效果良好。