当网页做了以下声明时
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
document.body.scrollTop的值永远等于0。
解决办法是只需把document.body用document.documentElement替换即可。
尤其要注意
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"或
"http://www.w3.org/TR/html4/loose.dtd"
这一段加以后就不可能使用document.body来取值了
DTD相关说明:
页面具有 DTD,或者说指定了 DOCTYPE 时,使用 document.documentElement。
页面不具有 DTD,或者说没有指定了 DOCTYPE,时,使用 document.body。
在 IE 和 Firefox 中均是如此。
为了兼容,不管有没有 DTD,可以使用如下代码:
var scrollTop = window.pageYOffset //用于FF
|| document.documentElement.scrollTop
|| document.body.scrollTop
|| 0;
本文介绍了在特定DTD声明下,document.body.scrollTop始终返回0的原因及解决方法。建议使用document.documentElement.scrollTop来获取正确的滚动位置。适用于具有DTD声明的XHTML或HTML文档。
8215

被折叠的 条评论
为什么被折叠?



