我正在調試某個第三方縮小的Javascript,某處正在觸發瀏覽器頁面刷新。但是,我無法弄清楚哪部分代碼導致了刷新。頁面刷新前的斷點?
有沒有辦法在Chrome中放置一個斷點,在頁面刷新之前會觸發一個斷點,以便我可以檢查調用堆棧以查看造成它的原因?
我正在調試某個第三方縮小的Javascript,某處正在觸發瀏覽器頁面刷新。但是,我無法弄清楚哪部分代碼導致了刷新。頁面刷新前的斷點?
有沒有辦法在Chrome中放置一個斷點,在頁面刷新之前會觸發一個斷點,以便我可以檢查調用堆棧以查看造成它的原因?
導航到Chrome> Inspect Element> Source>選擇你的縮小的Javascript文件(不要點擊{}選項以獲得更好的理解,點擊下面的鏈接獲取截圖),然後放置斷點並處理剩下的部分。
這對我的賞金理由沒有幫助,因爲我說我不是100%確定它在做什麼文件。這隻會在一個單獨的文件中創建一個斷點文件。 –
試試這個:
beforeunload
和unload
選項看看是否有幫助;下面的截圖。
編輯:另外,如果不工作,你可以使用Chrome瀏覽器搜索所有加載腳本代碼,可能是負責任的。顯然有a lot of ways to refresh the page with JavaScript,但他們大多有一些常見的字符串,如「導航」,「位置」,「重新加載」,「窗口」。
最後,如果有在同一頁你的鏈接,有可能一些JS被觸發它 - 點擊可能性不大,但值得探討的問題,如果沒有別的迄今的工作...
(請原諒我在手機上的格式化...)
您不指定第三方庫的功能。 如果它是像廣告之類的用戶友好組件,只需將其放置在iframe
內,並根據需要配置屬性即可。 https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe(向下滾動到沙箱屬性部分)
如果一些由事件觸發,只需使用(在Chrome瀏覽器開發工具只)的getEveneListener()函數,並按照listener
蹤跡......(硬,但有可能) 例子:
監聽器屬性將導致你將要調用的實際功能。您可以在混淆的代碼中搜索它們並添加調試器來了解它的用途。
還有很多其他情況 - 如果您可以指定更多。
在devtool,網絡窗格中,切換「保留日誌」,仔細檢查啓動器列。
在Firefox(不是Chrome,這很重要)開發者工具,去控制檯,輸入addEventListener('beforeunload',()=>{debugger})
,並執行您的代碼。調試器在debugger
語句處停止後,查看調用堆棧。你會看到觸發事件的是什麼。 Chrome並沒有在那裏。
至少,這對我有效。
你可以嘗試一個自定義的'onunload'監聽器並在那裏打破。 – Marvin
然後,您可以[生成堆棧跟蹤](http://stackoverflow.com/a/635852/558021)並查看哪些函數涉及觸發重新加載。 – Lix
您可能已經知道這一點。 Chrome的控制檯中有一個複選框,在重新加載後,日誌不會清除。 –