2016-08-19 167 views
0

有简单的代码铬触发滚动事件

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

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

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

问题是,DOMContentLoaded可以解决这个问题,但是我用滚动坐标(scroll-then-fixed)阻止动画,并且使用DOMContentLoaded坐标是错误的。

p.s.没有$ @#$ jQuery允许。

p.s.2。

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

没有解决,但也是解决方法。

回答

1

你可以用一个标志跟踪初始滚动,并检测是否该页面实际上并没有滚动:

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

试试下面的代码

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

}; 

</script> 
1

使用本:

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