2016-08-19 218 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); 
    } 
}