2017-04-19 462 views
20

我有,當我試圖檢查其不斷自動刷新每3-5秒一個有趣的網頁的源代碼(這可能是由於一些js腳本),它每次頁面刷新時重置我檢查元素 Inspector窗口的問題。如何阻止頁面自動刷新?

除了打開NoScript以阻止頁面自動刷新以外,是否有其他方式阻止該頁面刷新,或者檢查器窗口可能不會重置本身?

+0

會[此](https://stackoverflow.com/questions/3527041/prevent-any-form-of-page-refresh-using-jquery-javascript)有幫助嗎?不知道您是否可以通過這種方式實際防止軟件觸發刷新。我嘗試過修補'location.reload',但是我猜如果它存儲在閉包中,它將不起作用。 –

+2

你用過調試器嗎?然後開始調試你的代碼。 – fruitjs

+0

你可以嘗試在本地保存網頁文件,並去尋找違規的js離線,繞過它,然後檢查。有點粗糙,但可能工作? – ne1410s

回答

21

Firefox已經阻止刷新本地中普通的選項,該選項是在高級 - >>的時候通知我當網站嘗試重定向交換機或重新加載頁面enter image description here

+1

不錯! ......... –

+0

有趣的設置。不記得我在Firefox中有這個選項。謝謝您的回答! – Clone

+0

@ T.J.Crowder,您可以在刪除它之前發佈您寫的代碼嗎?我沒有機會保存它:,( – Clone

1

當頁面仍在加載時,您可以按Esc鍵。在頁面仍然是白色的時候,按下它。當您在此時停止加載頁面時,通常會停止所有自動加載的JavaScript。在動作上運行的任何腳本通常不受影響。每個頁面都不同,嘗試不同的時間。

當我使用了一個名爲NovelUpdates存在的JavaScript,可以使隱藏的某些元素的網站,當我在頁面加載按Esc鍵都將頁面加載後隱藏的元素是可見的。然後,當我點擊一個可以執行沒有問題的JavaScript的按鈕時。 NoScript不會解決您的問題,我相信。

另一個例子是那些惱人的盒子在10秒後彈出,表示你不是一個成員,不能在沒有登錄的情況下查看這個網站,就像一些新聞文章網站一樣。

24

通常我只是開DevTools,到相應的面板如果有必要,請點擊暫停。

開幕DevTools:通過菜單,或按F12按Ctrl + Shift + I,或爲Cmd + Shift + I取決於瀏覽器和操作系統。

切換面板:從DevTools頂部的選項卡中選取面板。它將被稱爲「調試器」(Firefox,IE)或「來源」(Chrome)或類似的。

暫停:在調試器/信號源面板中,單擊暫停按鈕(通常看起來像電視遙控器上的暫停按鈕,||),或按等效鍵盤。鍵盤當量是

  • 火狐&鉻:F8
  • IE:按Ctrl + Shift + B
+2

Brilliant 。簡單,簡單。適用於Chrome,Firefox,IE11。 –

3

針對此問題的最普遍的解決方案是捕獲beforeunload事件。瀏覽器會要求用戶確認離開頁面。代碼最簡單的形式如下所示:

window.onbeforeunload = function() { return true } 

您可以在控制檯中輸入此代碼。或者,您可以簡單地將以下網址粘貼到瀏覽器地址欄(不需要控制檯)。你甚至可以收藏它。

javascript:window.onbeforeunload = function() { return true } 

注意,當你將其粘貼地址欄中的現代瀏覽器都可能砍掉javascript:部分;確保你輸入回來。


要確定在Firefox中的重定向的原因,請嘗試以下操作:

  • 打開Web開發工具(CTRL + SHIFT + I),打開 「工具箱選項」,勾選「啓用持久性日誌「選項。這會使日誌在頁面加載中持續存在(否則將清除日誌)。

  • 現在切換到「網絡監視器」選項卡。

  • 打開URL並讓它刷新。

  • 在網絡監視器>原因欄內,您會發現頁面重新加載的原因。

Firefox Web Developer Tools > Network Monitor

原因列是很含糊器(Chrome做了很多更好作業)。但是,如果使用JavaScript來觸發頁面(重新)加載,那麼它至少會顯示該腳本的文件名和行號。

+0

'onbeforeunload'技巧僅適用於頁面刷新不在頁面內循環時,例如,它會阻止:'setTimeout(function ){location.reload();},1000);'但不是這個:'setInterval(function(){location.reload();},1000);'在第二種情況下,它會一直要求您取消一遍又一遍。:-)(好主意,但。) –

0

你可以做的是使用命令exit(),這相當於在PHP中死亡,並簡單地停止腳本。 如果您不知道是什麼原因造成的,並且您不想查找「壞孩子」,那麼您最好停止頁面底部的整個腳本。