3
私のウェブサイトのjsの1つが、ページの先頭に不要なスクロールを引き起こします。 jsがscrollTopプロパティを変更しているときにChrome Developers Toolsで休憩をとる方法scrollTopの変更を破る方法は?
私のウェブサイトのjsの1つが、ページの先頭に不要なスクロールを引き起こします。 jsがscrollTopプロパティを変更しているときにChrome Developers Toolsで休憩をとる方法scrollTopの変更を破る方法は?
以下のコードを貼り付けた後、onVerticalScroll(function(){debugger});
を実行してください。
JavaScriptを使用してスクロール位置が明示的に設定されている場合にのみ、これは一時停止することに注意してください。たとえば、大きな要素が一時的にページから消えてビューポートがジャンプした場合、トリガしません。
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;
}
}