为什么在这种情况下,在Firefox中,scrollWidth不起作用?

时间:2013-02-02 21:54:34

标签: javascript cross-browser

我正在尝试在Javascript中创建一个简单的选取框,并且需要在以下内容中获取 innerDIV 的完整内容宽度:

<div id="container" style="width: 100%; overflow: hidden;">
    <div id="innerDiv" style="direction: rtl; white-space: nowrap; overflow: visible; position: relative;">
        very long ... text
    </div>
</div>

我尝试了 scrollWidth 。它适用于Chrome ,但不适用于Firefox (其中它提供了clientWidth的值)。

以下是现场演示:http://jsfiddle.net/5fPGy/3/(使用Chrome和Firefox试用)

有谁知道为什么?以及如何获得全宽?

提前致谢。

2 个答案:

答案 0 :(得分:4)

我有同样的问题,我找到了你的问题的答案。这是Firefox中的一个错误:https://bugzilla.mozilla.org/show_bug.cgi?id=833542

Firefox为scrollWidth返回clientWidth值。它应该在Firefox 21中修复。

目前,我使用了一种解决方法在Firefox上获取正确的scrollWidth:将溢出设置为隐藏,获取正确的scrollWidth并将溢出恢复为可见。请参阅:http://jsfiddle.net/5fPGy/5/

var scrollWidth = $(ele).css("overflow", "hidden")[0].scrollWidth;
alert('clientWidt h = ' + ele.clientWidth + ',  scrollWidth = ' + scrollWidth  );
$(ele).css("overflow", "visible");

祝你好运,

安德烈

答案 1 :(得分:0)

这似乎可以解决问题:

docWidth = Math.max(
        Math.max(frameDoc.body.scrollWidth, frameDoc.documentElement.scrollWidth),
        Math.max(frameDoc.body.offsetWidth, frameDoc.documentElement.offsetWidth)                               
);