在 Javascript 里面调用一些属性的名称发生了改变,比如得不到 document.body.scrollTop 的值。
使用了 DOCTYPE 之后,滚动条位置必须用 document.documentElement.scrollTop 来调用,类似的还有 scrollLeft 等。
但是,在没有 DOCTYPE 的时候 document.documentElement.scrollTop 也永远为零了。
能否有一个在有或没有 DOCTYPE 定义都可以用的方案呢?
可以这样写:
// 浏览器滚动条位置
function scrollTop() {
var scrollTop = 0;
if (document.documentElement && document.documentElement.scrollTop) {
scrollTop = document.documentElement.scrollTop;
} else if (document.body) {
scrollTop = document.body.scrollTop;
} else if (window.pageYOffset) {
scrollTop = window.pageYOffset;
}
return scrollTop;
}