![](/img/trans.png)
[英]Google chrome document.body.scrollTop always returns 0
[英]$(document).scrollTop() always returns 0
一旦頁面的滾動位置達到一定高度,我只是想嘗試做一些事情。 但是,無論我向下滾動多遠, scrollTop()
都會返回 0 或null
。 這是我用來檢查scrollTop()
值的幫助函數:
$('body').click(function(){
var scrollPost = $(document).scrollTop();
alert(scrollPost);
});
我試過將scrollTop()
附加到$('body')
、 $('html')
,當然還有$(window)
,但沒有任何變化。
有任何想法嗎?
出於某種原因,從我的 html 和 body 標簽中刪除 'height: 100%' 解決了這個問題。
我希望這對其他人有幫助!
我的解決方案,在嘗試了上面的一些並且不涉及更改任何 CSS 之后:
var scroll_top = Math.max( $("html").scrollTop(), $("body").scrollTop() )
這適用於最新版本的 Chrome、Firefox、IE 和 Edge。
我只是為那些可能和我犯同樣錯誤的人提供了一個附加組件。 我的代碼如下:
var p = $('html,body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
此代碼適用於除 webkit 瀏覽器(例如 chrome 和 safari)之外的所有瀏覽器,因為<html>
標簽的 scrollTop 值始終為零或 null。
其他瀏覽器會忽略它,而 webkit 的瀏覽器不會。
最簡單的解決方案就是從你的代碼中刪除 html 標簽,瞧:
var p = $('body');
$( ".info" ).text( "scrollTop:" + p.scrollTop() );
去除height: 100%;
from html 和 body 標簽可以解決這個問題。
原因是您可能已將 100% 設置為 html 和 body 元素的 height 屬性值。 如果將 html 和 body 元素的 height 屬性設置為 100%,則它們的高度等於文檔的高度。
有同樣的問題。 scrollTop() 適用於某些塊而不是文檔或正文。 要使此方法起作用,您應該為塊添加高度和溢出樣式:
#scrollParag {
height: 500px;
overflow-y: auto;
}
接着:
var scrolParag = document.getElementById('scrollParag');
alert(scrolParag.scrollTop); // works!
Scroll Top 也總是為我返回 0。 我用它來將焦點放在頁面上的特定元素上。 我使用了另一種方法來做到這一點。
document.getElementById("elementID").scrollIntoView();
在手機、平板電腦和台式機上對我來說效果很好。
var bodyScrollTop = Math.max(document.scrollingElement.scrollTop, document.documentElement.scrollTop)
應該適用於現代瀏覽器。
順便說一句,您似乎應該使用
$("body").scrollTop()
代替
$(".some-class").scrollTop
這就是為什么我被卡住了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.