我有这个javascript代码:

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标记上,问题是如果我放入任何doctype,则此代码不适用于Firefox,但适用于IE。
我调试了scrollWidth和offsetWidth的值,并且始终获得相同的值,这是使用Doctype发生的。

有什么办法吗?

最佳答案

在怪癖模式下(无doctype或怪癖模式doctype),在某些情况下,document.body.scrollWidth实际上返回文档的scrollWidth而不是正文。在标准模式(具有大多数doctype)中,它返回正文的scrollWidth,在某些情况下,document.documentElement.scrollWidth返回文档的scrollWidth。有关详细信息,请参见http://dev.w3.org/csswg/cssom-view/#dom-element-scrollwidth

10-08 16:26