2011-11-29 45 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