Javascript 使用Doctype让scrollTop返回0,为什么?

Javascript 使用Doctype让scrollTop返回0,为什么?,javascript,dom,doctype,Javascript,Dom,Doctype,当我将此Doctype放入文档时,document.body.scrollTop返回零 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 为什么会这样?当您使用该Doctype时,您会将当前的每个浏览器都置于所谓的“怪癖”模式中,如果没有它,您将处于怪癖模式 你可以继续读下去 [m] ost浏览器提供window.page

当我将此Doctype放入文档时,document.body.scrollTop返回零

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

为什么会这样?

当您使用该Doctype时,您会将当前的每个浏览器都置于所谓的“怪癖”模式中,如果没有它,您将处于怪癖模式

你可以继续读下去

[m] ost浏览器提供window.pageXOffset/pageYOffset。这些都是完全可靠的。再一次,InternetExplorer是个例外,因为它不提供这些属性。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上。

当您使用该Doctype时,您会将当前的所有浏览器都置于所谓的“QuirksMode”模式,没有它,您将处于Quirks模式

你可以继续读下去

[m] ost浏览器提供window.pageXOffset/pageYOffset。这些都是完全可靠的。再一次,InternetExplorer是个例外,因为它不提供这些属性。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上。

哪个浏览器?在哪个元素上?IE和FF。。document.body.scrollTop;哪个浏览器?在哪个元素上?IE和FF。。document.body.scrollTop;但是如果我想自己设置滚动位置怎么办?window.pageYOffset是只读的?明白了!:window.x,y@用户:包括IE6在内的所有当前浏览器都支持非标准的。但是如果我想自己设置滚动位置呢?window.pageYOffset是只读的?明白了!:window.x,y@用户:包括IE6在内的所有当前浏览器都支持非标准浏览器。