Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript FireFox中的scrollHeight属性_Javascript_Html - Fatal编程技术网

Javascript FireFox中的scrollHeight属性

Javascript FireFox中的scrollHeight属性,javascript,html,Javascript,Html,我正在开发一个函数来检测DIV元素中的文本是否会溢出。在这方面,我有一个在Chrome和IE中工作的函数,它将元素的scrollHeight与clientHeight属性进行比较 但是在FireFox中,两个属性(以及offsetHeight)总是报告相同的数字,恰好是div元素的高度 如果我在div样式中添加'overflow:auto',我确实可以从scrollHeight属性获得准确的结果。但是对于我正在进行的项目来说,显示滚动条不是一个可接受的解决方案 有什么建议吗?这是记录在案的行为:

我正在开发一个函数来检测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(当前的稳定版本),它不工作。请看