当我将此 Doctype 放入我的文档时,document.body.scrollTop
返回零。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
这是为什么?
最佳答案
当您使用该 Doctype 时,您会将每个当前浏览器放在所谓的 Almost Standards mode 中。 ,没有它,您将处于怪癖模式。
正如您在 this page 上看到的那样,
[m]ost browsers provide
window.pageXOffset/pageYOffset
. These are completely reliable. Once again, Internet Explorer is the odd one out, as it does not provide these properties. Internet Explorer and some other browsers will providedocument.body.scrollLeft/Top
. In strict mode, IE 6 and a few other browsers, providedocument.documentElement.scrollLeft/Top
.
此处提供的脚本会计算您想要的值:
function getScrollXY() {
var scrOfX = 0, scrOfY = 0;
if( typeof( window.pageYOffset ) == 'number' ) {
//Netscape compliant
scrOfY = window.pageYOffset;
scrOfX = window.pageXOffset;
} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
//DOM compliant
scrOfY = document.body.scrollTop;
scrOfX = document.body.scrollLeft;
} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
//IE6 standards compliant mode
scrOfY = document.documentElement.scrollTop;
scrOfX = document.documentElement.scrollLeft;
}
return [ scrOfX, scrOfY ];
}
另一篇有趣的文章出现在 QuirksMode 上,A tale of two viewports .
关于javascript - 使用 Doctype 让 scrollTop 返回 0,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4815283/