当我将此Doctype放入我的文档时document.body.scrollTop
返回零。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
为什么?
答案 0 :(得分:4)
当您使用该Doctype时,您会将所有当前浏览器放入所谓的Almost Standards mode,如果没有它,您将处于Quirks模式。
正如您可以阅读this page,
[m] ost浏览器提供
window.pageXOffset/pageYOffset
。这些都是完全可靠的。再次,Internet Explorer是奇怪的,因为它不提供这些属性。 Internet Explorer和其他一些浏览器将提供document.body.scrollLeft/Top
。在严格模式下,IE 6和其他一些浏览器提供document.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。