【发布时间】:2010-04-26 22:04:10
【问题描述】:
我在移动鼠标时在状态栏中显示 document.body.scrollTop 的值。在 IE 中该值始终为 0。为什么总是0?还有其他方法可以获取滚动条移动了多少?
【问题讨论】:
-
我赞成选择的答案,因为似乎没有其他人这样做(除非有人反对它)。如果你能回答尼克的问题就好了。
我在移动鼠标时在状态栏中显示 document.body.scrollTop 的值。在 IE 中该值始终为 0。为什么总是0?还有其他方法可以获取滚动条移动了多少?
【问题讨论】:
您可能想在 IE 中尝试使用旧文档类型:
var top = (document.documentElement && document.documentElement.scrollTop) ||
document.body.scrollTop;
【讨论】:
document.documentElement 未定义,那不是炸弹吗?我认为您在三元表达式的第一部分是指document.documentElement 而不是document.documentElement.scrollTop。 :)
var top = document.documentElement.scrollTop || document.body.scrollTop;
var top = (document.documentElement && document.documentElement.scrollTop) || document.body.scrollTop;
此函数提供了读取滚动偏移量的跨浏览器实现:
function posTop() {
return typeof window.pageYOffset != 'undefined' ? window.pageYOffset: document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop? document.body.scrollTop:0;
}
【讨论】:
根据 DOCTYPE,您必须使用 document.body.scrollTop 或 document.documentElement.scrollTop。你试过第二个吗?
你可以这样做:
var scrollTop = document.documentElement ? document.documentElement.scrollTop :
document.body.scrollTop;
我在研究您的问题时遇到了这些链接:
这可能会对您有所帮助。
【讨论】: