Chrome会触发滚动事件

时间:2016-08-19 11:06:43

标签: javascript html google-chrome

有简单的代码

window.onload = function () {
    window.addEventListener('scroll', function () {
        alert('asd');
    });
};

当您刷新滚动页面时,在Firefox中 - 您不会看到警报,但在Chrome有时,它会触发警报,有时则不会。相同页面,相同滚动,只需多次刷新。

问题是如何在刷新后避免在chrome中加载时触发滚动事件?

问题是,DOMContentLoaded可以解决这个问题,但是我在滚动时使用坐标进行块动画(滚动然后修复),并且DOMContentLoaded坐标是错误的。

P.S。不允许$ @#$ jQuery。

p.s.2。

    if ('scrollRestoration' in history) {
        history.scrollRestoration = 'manual';
    }

不是修复,但也是解决方法。

3 个答案:

答案 0 :(得分:1)

您可以使用标记跟踪初始滚动并检测页面是否实际滚动:

window.onload = function () {
    var isFirstTime = true;
    window.addEventListener('scroll', function () {
        if (isFirstTime) {
            isFirstTime = false;
            if (window.scrollY === 0) return;
        }
        alert('asd');
    });
};

答案 1 :(得分:1)

尝试以下代码

<script>
window.onscroll = function() {
console.log('Scrolling');

};

</script>

答案 2 :(得分:1)

使用它:

var tFn = function (){
    alert();
}
document.onreadystatechange = function (){
    if ( document.readyState == ("complete") ) {
        setTimeout(function(){
            window.onscroll = tFn;
        },100);
    }
}