2016-03-21 8 views

Antwort

2

Fügen Sie den folgenden Code ein und führen Sie dann onVerticalScroll(function(){debugger});.

Beachten Sie, dass dies nur dann anhält, wenn die Bildlaufposition explizit über JavaScript festgelegt wird. Es wird beispielsweise nicht ausgelöst, wenn ein großes Element vorübergehend von der Seite verschwindet und das Ansichtsfenster nach oben springt.

function onVerticalScroll(fnOnScroll){ 
    var originalScrollTop = getPropertyDescriptor(HTMLElement.prototype, "scrollTop"); 
    Object.defineProperty(HTMLElement.prototype, "scrollTop", { 
     get: function(){ 
      return originalScrollTop.get.apply(this, arguments);  
     }, 
     set: function(){ 
      fnOnScroll(); 
      return originalScrollTop.set.apply(this, arguments); 
     } 
    }); 

    var originalScrollTo = window.scrollTo; 
    window.scrollTo = function(){ 
     fnOnScroll(); 
     return originalScrollTo.apply(this, arguments); 
    } 
    var originalScrollBy = window.scrollBy; 
    window.scrollBy = function(){ 
     fnOnScroll(); 
     return originalScrollBy.apply(this, arguments); 
    } 

    function getPropertyDescriptor(object, propertyName){ 
     var descriptor = Object.getOwnPropertyDescriptor(object, propertyName); 
     if (!object){ 
      throw new Error("descriptor not found"); 
     } 
     if (!descriptor) { 
      return getPropertyDescriptor(Object.getPrototypeOf(object), propertyName); 
     } 
     return descriptor; 
    } 
}