我有一个脚本,当我滚动到一个元素时会计入一个数字,但它无缘无故地停止在Chrome / Firefox中工作。但它在Edge中工作正常。
我尝试清除缓存和Cookie以及禁用的扩展程序,但它仍然无效。
$(function() {
var oTop = $('.stats').offset().top - window.innerHeight;
$(window).scroll(function() {
var pTop = $('body').scrollTop();
if (pTop > oTop) {
start_count();
}
});
});
var executed = false; // <= variable to false.
function start_count() {
if (!executed) { // <= make sure it didn't executed before.
$('.stats h1').countTo({
onComplete: function() {
var elementToPrepend = '<span style="margin-left:4px;">+</span>';
$(elementToPrepend).hide().appendTo(this).fadeIn();
}
});
executed = true; // <= the count() function already executed
}
}
&#13;
.empty-space {
height: 500px;
}
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-countto/1.2.0/jquery.countTo.js"></script>
<div class="empty-space">
scroll down...
</div>
<div class="stats">
<h1 data-from="200" data-to="2000" data-speed="1750" data-refresh-interval="50">200</h1>
</div>
<div class="empty-space">
</div>
&#13;
演示链接:https://jsfiddle.net/30w9kbfj
Chrome:版本61.0.3163.79(官方版本)(64位)。
Firefox:版本55.0.3(64位)。
操作系统:Windows 10 64位。
如果它不适合你尝试使用Edge并告诉我,任何帮助都表示赞赏。
答案 0 :(得分:0)
所以问题是Element.scrollTop
在Chrome / Firefox中得到了更新,无论如何。
我通过合并Element.scrollTop
和document.scrollingElement.scrollTop
找到了一种解决方法,使其成为跨浏览器。
$(document.scrollingElement || "body").scrollTop();