firefox bug中的Javascript和Doctype

时间:2011-11-29 16:14:12

标签: javascript firefox doctype

我有这个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发生的。

任何解决方案?

1 个答案:

答案 0 :(得分:3)

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