2

我正在尝试在 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 试试)

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

提前致谢。

4

2 回答 2

4

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

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

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

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

祝你好运,

安德烈

于 2013-04-04T12:51:53.623 回答
0

这似乎可以解决问题:

docWidth = Math.max(
        Math.max(frameDoc.body.scrollWidth, frameDoc.documentElement.scrollWidth),
        Math.max(frameDoc.body.offsetWidth, frameDoc.documentElement.offsetWidth)                               
);
于 2016-12-22T18:54:11.233 回答