Javascript FireFox中的scrollHeight属性
我正在开发一个函数来检测DIV元素中的文本是否会溢出。在这方面,我有一个在Chrome和IE中工作的函数,它将元素的scrollHeight与clientHeight属性进行比较 但是在FireFox中,两个属性(以及offsetHeight)总是报告相同的数字,恰好是div元素的高度 如果我在div样式中添加'overflow:auto',我确实可以从scrollHeight属性获得准确的结果。但是对于我正在进行的项目来说,显示滚动条不是一个可接受的解决方案Javascript FireFox中的scrollHeight属性,javascript,html,Javascript,Html,我正在开发一个函数来检测DIV元素中的文本是否会溢出。在这方面,我有一个在Chrome和IE中工作的函数,它将元素的scrollHeight与clientHeight属性进行比较 但是在FireFox中,两个属性(以及offsetHeight)总是报告相同的数字,恰好是div元素的高度 如果我在div样式中添加'overflow:auto',我确实可以从scrollHeight属性获得准确的结果。但是对于我正在进行的项目来说,显示滚动条不是一个可接受的解决方案 有什么建议吗?这是记录在案的行为:
有什么建议吗?这是记录在案的行为: 当元素的内容不存在时 生成一个垂直滚动条,然后 其scrollHeight属性等于 它的clientHeight属性
我知道它不干净,但你能做点像这样的事吗
e.style.overflow = "scroll";
var scrollHeight = e.scrollHeight;
e.style.overflow = "hidden";
用户看不到这一点,因为只有在当前没有运行javascript的情况下才会重新绘制页面。Kartikaya Gupta解释了Firefox的行为
检测元素是否会溢出的建议是使其可滚动,并将
scrollLeft
/scrollTop
临时设置为1。当至少scrollWidth
或scrollHeight
保持其值时,元素将溢出。为了防止用户看到检查,您可能希望在位于视口负上方或左侧的克隆元素中执行检查。在实际的Firefox版本中,这不再是一个问题,因为scrollHeight属性即使没有此处所指的overflow=“scroll”技巧也可以工作。但在一些旧版本中,这种情况仍然发生
非常感谢@thejh,你的提示对我很有用 甚至jQuery也必须执行CSS字段的交换技巧,才能正确计算维度。请注意,一般来说,您应该先保存值,然后恢复它,而不是假设它是隐藏的。我以为我读了规范,但如果我错过了,显然不够接近。谢谢你为我指出这一点。顺便说一句,jQuery中的哪个函数会这样做?很抱歉,我在这里遇到了同样的问题,clientHeight和scrollHeight给了我相同的值,即使div有scrollbar,我的浏览器是Firefox 6.0,这是一个已知的错误吗?这在Firefox版本21之后就不再发生了。你确定吗?我有FF版本46(当前的稳定版本),它不工作。请看