2016-03-21 21 views
3

Web sitemdeki jlerden biri sayfanın üstüne gereksiz kaydırma yapılmasına neden oluyor. Js scrollTop özelliğini değiştirdiğinde Chrome Geliştiriciler Araçları'nda nasıl bir mola verilir?scrollTop değişimi nasıl bozulur?

cevap

2

Aşağıdaki kodu yapıştırın ve sonra onVerticalScroll(function(){debugger});'u çalıştırın.

Bunun yalnızca kaydırma konumu JavaScript ile açıkça ayarlandığında duracağını unutmayın. Örneğin, büyük bir öğe sayfadan geçici olarak kaybolursa ve görüntü alanının yukarı sıçramasına neden olursa tetiklenmez.

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; 
    } 
} 
İlgili konular