countTo脚本在最后一个版本的chrome / firefox中不起作用

时间:2017-09-07 13:09:26

标签: javascript jquery google-chrome firefox

我有一个脚本,当我滚动到一个元素时会计入一个数字,但它无缘无故地停止在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;
&#13;
&#13;

演示链接:https://jsfiddle.net/30w9kbfj

Chrome:版本61.0.3163.79(官方版本)(64位)。

Firefox:版本55.0.3(64位)。

操作系统:Windows 10 64位。

如果它不适合你尝试使用Edge并告诉我,任何帮助都表示赞赏。

1 个答案:

答案 0 :(得分:0)

所以问题是Element.scrollTop在Chrome / Firefox中得到了更新,无论如何。

我通过合并Element.scrollTopdocument.scrollingElement.scrollTop找到了一种解决方法,使其成为跨浏览器。

$(document.scrollingElement || "body").scrollTop();

Source

Document.scrollingElement

Element.scrollTop