这是一个更大程序的一部分,该程序正在处理 <div>
上的滚动条修改高度时。
在记录用于移动滚动条的各种值的输出时,会出现一个问题,即生成的值带有小数位,但仅在 Opera(版本 44.0.2510.1449)上出现,并且这只发生在我 friend 的浏览器上。在我自己的 Opera(版本 44.0.2510.1449)上我没有遇到同样的问题。
尽管这可能无关紧要,但代码的目的是找出滚动条在 id 为 #mydiv
的 div 中的位置。并根据结果做一些事情。
更改变量名称的类似代码:
var myDivHeight = $('#mydiv').height();
$('#mydiv').height(myDivHeight + 50); //10 extra for padding
var scrollTop = $('#mydiv').scrollTop();
var scrollHeight = $('#mydiv').prop('scrollHeight');
console.log(scrollHeight + '-' + scrollTop + '=' + (scrollHeight - scrollTop));
console.log(myDivHeight + 60);
注意:60是由于页面动态变化,所以div高度发生了变化。输出的结果应该是scrollHeight - scrollTop
=myDivHeight + 60
.
这是我 friend 在 Opera 上的控制台输出(给出小数滚动顶部):
这是我在 Opera 上的控制台输出:
这是 Chrome 上的控制台输出:
这是 Firefox 的控制台输出:
我找不到其他人报告此事。这是否已被其他人报告或看到?有什么办法可以克服这个问题吗?
谢谢。
最佳答案
事实证明,花时间提出问题帮助我自己回答了这个问题。
首先,要解决这个问题,需要使用Math.round(scrollTop.value)
。
scrollTop 的规范显示它是 unrestricted double数据类型,因此 Opera 在规范内处理此问题。引用:https://drafts.csswg.org/cssom-view/#dom-element-scrolltop
在类型从整数更改为数字之前,jQuery 中出现此问题:https://github.com/jquery/api.jquery.com/issues/608
关于javascript - Opera 在scrollTop 上生成小数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43659331/