WEB开发 - 关于刷新页面后获取浏览器滚动条位置

现在很多浏览器都会在用户刷新同一个页面的时候,保持窗口滚动条的位置,也就是说,用户刷新前页面处于那个位置刷新后会处于同一个位置。为了获取页面刷新后的位置,我写了一个获取滚... 现在很多浏览器都会在用户刷新同一个页面的时候,保持窗口滚动条的位置,也就是说,用户刷新前页面处于那个位置刷新后会处于同一个位置。为了获取页面刷新后的位置,我写了一个获取滚动条位置的函数bar_top(),这个函数会返回表示滚动条高度的数字。然后我在onload后alert这个值。具体代码如下:

<!DOCTYPE html>
<html>
<head>
<title>Bar_top</title>
<meta charset="UTF-8" />
</head>
<body style="height: 2000px"></body>
<script>
function bar_top() {
if (document.documentElement && (document.documentElement.scrollTop)) {
return document.documentElement.scrollTop;
} else if (document.body && (document.body.scrollTop)) {
return document.body.scrollTop;
} else {
//如果前面两项都没有返回,则表明为它们的值都为0,因此在此返回0
return 0;
}
}
window.onload = function () {
alert(bar_top());
}
</script>
</html>

运行以上代码后,把滚动条拉到低端,在刷新页面。
Opera,Chrome和Firefox都会alert一个表示具体高度的数字。而IE和Safari则得不到预期的结果。

而且,IE和Safari给人的感觉是当用户刷新后的一瞬间会迅速把滚动条拉到顶端,等页面加载完成后在拉回原来的位置(通常这个过程如果不是特别注意会很难察觉),不过我不解之处在于,在IE和Safari下,alert(bar_top())这条语句似乎会在页面加载完成之前执行,但是我明明加了一句window.onload啊,为什么还会出现这种情况,难道这样写不对,onload不是在页面加载完成后才触发吗?
。。。。。。。。
没有满意的答案
。。。。。。。。
展开
 我来答
方圆百里12
2014-10-24 · 超过65用户采纳过TA的回答
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:112万
展开全部
获取坐标: IE (event.x event.y)

获取滚动条位置:

document.body.scrollTop (滚动条离页面最上方的距离)

document.body.scrollLeft (滚动条离页面最左方的距离)

当我用js获取当前垂直或者水平方向滚动条位置的时候,使用"document.body.scrollTop"或者"document.body.scrollLeft"是无效的,得到的数值永远是0。但是,当写在“onscroll”事件里面的时候,上述方法可以获得当前滚动条的位置。

当网页最前面有以下内容:

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

document.documentElement.scrollTop (滚动条离页面最上方的距离)

document.documentElement.scrollLeft (滚动条离页面最左方的距离)

所以为了准确取得当前滚动条的位置,正确的使用方法是:

document.documentElement.scrollTop:垂直方向
document.documentElement.scrollLeft:水平方向
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式