在Chrome Devtools中,您可以在更改DOM元素的屬性或元素的子樹修改時打破JavaScript。在瀏覽器中,打開窗口滾動
我正在處理一些遺留代碼,它在某些情況下會將一些javascript滾動到頁面頂部,並且我想要查找執行此操作的JS。
Devtools有沒有辦法在滾動事件中解決?
它可能是jQuery或Prototype.js或事件庫JS,它已經搜索了.scrollTop或.animate的代碼庫,並且我發現了很多這些,但沒有一個導致我的問題。
在Chrome Devtools中,您可以在更改DOM元素的屬性或元素的子樹修改時打破JavaScript。在瀏覽器中,打開窗口滾動
我正在處理一些遺留代碼,它在某些情況下會將一些javascript滾動到頁面頂部,並且我想要查找執行此操作的JS。
Devtools有沒有辦法在滾動事件中解決?
它可能是jQuery或Prototype.js或事件庫JS,它已經搜索了.scrollTop或.animate的代碼庫,並且我發現了很多這些,但沒有一個導致我的問題。
當滾動位置以編程方式更改時,可以使用控制檯注入此行以引發調試器。
window.__defineSetter__("pageYOffset", function(){
debugger;
});
然後,查看調用堆棧以查看觸發它的內容。
如果你不想激活調試器,你可以用下面的代碼打印堆棧跟蹤istead:
window.__defineSetter__("pageYOffset", function(){
console.log(new Error().stack);
});
另一種選擇是用自己更換窗戶scroll
,scrollTo
和scrollBy
方法。
window.__defineGetter__('scroll', function(){
console.log('window.scroll getter :' + new Error().stack);
return function(x,y){
debugger; //or print stack trace
oldScroll(x,y);
}
});
爲scrollTo
和scrollBy
重複。
我在控制檯中放置了該調試器行,當點擊滾動按鈕時沒有任何東西出現。 – 2014-10-20 20:23:41
@Josh你有嘗試替換'scroll','scrollTo'和'scrollBy'方法嗎? – 2014-10-20 20:30:03
嘗試定義所有獲得者並且未在控制檯中看到輸出...使用Chrome(最新)。當我在控制檯輸出函數def(即輸入fn name和Enter)時,我確實看到了新的fn def。調用'scroll',例如,拋出2個錯誤:'窗口。在
我沒有關於實際突破的額外想法。
但我懷疑它不是滾動導致的問題,但在HTML中的'#'。
<a href="#" onclick="return false;">x</a>
是一種非常常見的模式。當你忘記(或阻止)「返回false」時,#(空錨點)將被導航到,這導致滾動到頂部。
點擊後檢查網址是否有#末尾!
是的,這是不好的做法。但是我看到自己仍然在做。當我有美好的一天時,我使用'x'。你可以添加處理程序和樣式,但是你喜歡,代碼更短。我不太關心javascript:...解決方案,因爲它們增加了閱讀代碼的複雜性。 – ZPiDER 2016-05-18 15:04:34
您是否搜索過window.scrollTo或window.scroll? – 2014-10-20 19:39:38
是的,我已經搜索了這些,他們出現了,但他們都沒有爲我的網頁。 – 2014-10-20 19:39:59
您可能可以通過視覺事件看到它http://www.sprymedia.co.uk/article/visual+event – 2014-10-20 19:40:40