Opera在scrollTop上生成小数值

时间:2017-04-27 13:29:01

标签: javascript jquery html opera

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

当记录用于移动滚动条的各种值的输出时,出现了使用小数位生成值的问题,但仅在Opera(版本44.0.2510.1449)上出现问题,这只发生在我朋友的浏览器上。在我自己的Opera(版本44.0.2510.1449)上,我没有遇到同样的问题。

虽然它可能不相关,但代码的目的是找出标识符#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):

Friend's Opera console output

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

My Opera console output

以下是Chrome上的控制台输出:

My Chrome console output

这是Firefox的控制台输出:

My Firefox console output

我找不到其他人举报此事。这是否被其他人报告或看过?有没有办法克服这个问题?

谢谢。

1 个答案:

答案 0 :(得分:1)

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

首先,要解决这个问题,需要使用Math.round(scrollTop.value)

scrollTop规范显示它是一种长数据类型,因此Opera在规范中处理它。参考:https://drafts.csswg.org/cssom-view/#dom-element-scrolltop

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