这是更大程序的一部分,该程序在修改高度时处理<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):
这是我在Opera上的控制台输出:
以下是Chrome上的控制台输出:
这是Firefox的控制台输出:
我找不到其他人举报此事。这是否被其他人报告或看过?有没有办法克服这个问题?
谢谢。
答案 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