2011-11-29 48 views
1

我有这样的javascript代码:Javascript和文档类型在Firefox的错误

function pageWidth() { 
    return (window.innerWidth != null 
     ? window.innerWidth 
     : (document.body != null 
      ? document.body.offsetWidth 
      : null 
    )); 
} 

function bodyloaded() { 
    winWidth = pageWidth(); 
    window.scroll(0, 0); 
    scrAmount = Math.floor(
     ((document.body['scrollWidth'] - document.body.offsetWidth)/2) + 8 
    ); 
    scrollBy(scrAmount, 0); 
} 

,并在onload事件,并在onResize方法被应用在body标签,问题是,如果我把所有的文档类型,在Firefox这个代码不工作,但适用于IE。 我调试scrollWidth和offsetWidth的值,并且总是得到相同的值,这使用Doctype发生。

任何解决方案?

回答

3

在怪癖模式下(没有文档类型或怪癖模式文档类型),在某些情况下,document.body.scrollWidth实际上会返回文档的scrollWidth而不是正文。在标准模式下(大多数文档类型),它返回正文的scrollWidth,并且document.documentElement.scrollWidth在某些情况下返回文档的scrollWidth。有关此规格草案,请参阅http://dev.w3.org/csswg/cssom-view/#dom-element-scrollwidth