2012-12-03 40 views
2

我想知道页面完全加载时的窗口滚动位置。页面完全加载时的窗口滚动位置

当我点击一个带有id的链接时,页面会根据这个id加载元素。当页面加载时,我想知道窗口的位置。

的index.html

<a href="page.html#2012_8">link</a> 

page.html中

<script> 
$(window).load(function(){ 
    console.log($(window).scrollTop()); 
}); 
</script> 

<p id="2012_8">This is some text in a paragraph.</p> 

当我点击链接,控制台日志得到0。当我刷新page.html中,控制台日志得到正确的窗口滚动位置。为什么?谢谢你的帮助。

+0

小提琴演示行为:http://fiddle.jshell.net/2bL7X/show/。点击“开始!”应该向你发送一个不同的小提琴的哈希标记'foobar',并且你应该看到一个带有“加载5027”或类似的弹出窗口。 – apsillers

回答

4

尝试使用

console.log($(document).scrollTop());

我的萤火测试,它工作得很好。

+0

谢谢,这解决了我的问题:D – Matt

+0

欢迎你:P – joao

1

当您更改窗口哈希时,不会触发'load'事件。为了让事件触发,你应该钩入hashchange事件。

$(window).on('hashchange',function() { 
    console.log($(window).scrollTop()); 
}); 

$(document).ready(function() { 
    $(window).trigger('hashchange'); 
}); 
+0

这适用于此吗? OP正在导航到一个*完全不同的页面*('index.html' - >'page.html'),它有一个散列。 – apsillers

+0

@apillers没有看到!谢谢。此解决方案仍应在另一页上工作。但根本不回答这个问题! – bluetoft

+0

@Bluetoft的确,这不是我的问题的答案。 – Matt

-1

您可以使用

$(document).ready(function(){ 
console.log($(document).prop('scrollHeight')); 
}) 

,或者您可以使用ATTR这个

$(document).ready(function(){ 
console.log($(document).attr('scrollHeight')); 
}) 
+0

-1:['scrollHeight'](https://developer.mozilla.org/en-US/docs/DOM/element.scrollHeight)用于度量元素的可滚动内容的高度。它不会根据滚动进行更改;当元素内包含的内容增加或减少时,它会改变。 OP需要滚动偏移量,即页面当前滚动*多少。 – apsillers