javascript - Opera 在scrollTop 上生成小数值

标签 javascript jquery html opera

这是一个更大程序的一部分,该程序正在处理 <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 上的控制台输出(给出小数滚动顶部):

Friend's Opera console output

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

My Opera console output

这是 Chrome 上的控制台输出:

My Chrome console output

这是 Firefox 的控制台输出:

My Firefox console output

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

谢谢。

最佳答案

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

首先,要解决这个问题,需要使用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/

相关文章:

javascript - Flowplayer,Javascript,捕获点击事件?

javascript - Jquery - 启用/禁用多个列表中的多个复选框

html - 为什么我的外部 CSS 在 FF 或 IE 中不起作用,但在 Chrome 中起作用?

html - 绝对定位的元素是否不服从整体的 div CSS 命令?

javascript - 将不可变数组从字符串转换为数字

javascript - 运行 VersionOne Javascript SDK 的 example.js 时发生 ETIMEOUT

javascript - jQuery - 如果打开任何激活元素,如何隐藏元素?

javascript - 委托(delegate)事件处理程序不起作用

javascript - :last for table

html - 如果文本居中,我如何只能在一个方向上显示 'grow' 文本?