JavaScript---关于scrollTop为0以及解决方法。

说明:当没有DOCTYPE声明的时候document.body.scrollTop一切正常
当有DOCTYPE声明的时候document.body.scrollTop总是输出0;
当有DOCTYPE声明的时候document.body.scrollTop总是输出0;
我们必须改用另一个方法:
document.documentElement.scrollTop
我们刚才使用的document.documentElement.scrollTop不能用了,
它总是输出0.
这是我们又想到了 在没有声明的时候,
需要用
document.body.scrollTop
当有DOCTYPE声明的时候,
需要用document.documentElement.scrollTop方法来获取滚动条高度。
当没有声明的时候,用document.body.scrollTop方法。
所以我们需要用到if...else...去判断。
如果有DOCTYPE声明,我们该怎么办,如果没有DOCTYPE声明,我们该怎么办。
var scotop ;
if(document.body.scrollTop){
scotop =
document.body.scrollTop;

}else{
scotop =
document.documentElement.scrollTop

}
这样判断后,就可以在两种情况下同时使用了。
IE6,IE7,FF2测试通过.
FF3没装,无法测试。
这个方法是google找来的。



1document.onclick = function(){
2    var scrollPos;

3    if (typeof
window.pageYOffset
!= 'undefined') {
4         scrollPos = window.pageYOffset;

5     }


6    else if (typeof
document.compatMode
!= 'undefined' &&
document.compatMode
!= 'BackCompat') {
7         scrollPos =
document.documentElement.scrollTop;
8     }


9    else if (typeof document.body
!=
'undefined') {
10         scrollPos =
document.body.scrollTop;
11     }


12      alert( "   滚动条高度为
"
+
scr
ollPos  
)
13}
程序解释:
解释1:
document.body.scrollTop:就是滚动条顶部到网页顶部的这段距离
window.pageYOffset是NS专用属性,它的含义和IE下的document.body.scrollTop一样


解释2:
当文档有了标准声明时, document.compatMode 的值就等于
"CSS1compat",

当没声明的时候,
document.compatMode 的值等于 "BackCompat",所以想判断文档是否有声明,

可以这么写:
if (typeof document.compatMode !=
'undefined' && document.compatMode != 'BackCompat'){

}

解释3:
当文档没有声明的时候,可以用
document.body.scrollTop;来获取滚动条高度。
posted @ 2011-04-21 21:02  thinksea  阅读(1791)  评论(0)    收藏  举报