Opera 在 scrollTop 上产生分数值

Opera producing fractional values on scrollTop

这是一个较大程序的一部分,该程序在修改高度时处理 <div> 上的滚动条。

在记录移动滚动条的各种值的输出时,会出现一个问题,即生成的值带有小数位,但仅限于 Opera(版本 44.0.2510.1449),而且这只发生在我朋友的浏览器上.在我自己的 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.

这是我朋友在 Opera 上的控制台输出(给出小数 scrollTop):

这是我在 Opera 上的控制台输出:

这是 Chrome 上的控制台输出:

这是 Firefox 的控制台输出:

我找不到其他人报告此事。有其他人报告或看到过吗?有什么办法可以克服这个问题吗?

谢谢。

事实证明,花时间问问题有助于我自己回答。

首先,要克服这个问题,是使用Math.round(scrollTop.value)的情况。

scrollTop 的规范显示它是 unrestricted double data type so Opera is handling this within spec. Reference: https://drafts.csswg.org/cssom-view/#dom-element-scrolltop

在类型从整数更改为数字之前 jQuery 中出现的问题:https://github.com/jquery/api.jquery.com/issues/608