2

考慮以下傻例如:chrome:如何中止在`debugger`語句停止的腳本?

<!doctype html> 
<meta charset="utf-8"> 
<title>dumb snippet</title> 
<script> 
var i = 0; 
while (i < 100) { 
    console.log(i); 
    debugger; 
    i += 1; 
} 
</script> 

如果我運行使用谷歌Chrome瀏覽器的DevTools此代碼,調試器盡職盡責地在debugger聲明停止執行,但我還沒有發現任何方式立即終止(和重新啓動)腳本。 AFAICT,按Ctrl-R甚至Shift-Ctrl-R,而不是重新加載頁面,只會導致執行繼續。

我發現的唯一辦法很明顯,但不必要的麻煩:完全殺死標籤頁/窗口,然後打開一個新窗口。

Google Chrome開發者工具是否提供某種方式來立即中止在debugger語句處停止的腳本? (如果答案是「否」,請不要張貼變通辦法,我可以考慮其中的很多,例如持有F-8直到循環退出,儘管這當然不起作用,如果循環結果是一個無限循環,無論如何,這裏我只關心是否有一個「官方」的方式來中止並重新啓動這樣的腳本。)

+0

我已經收到這個問題,但並非總是如此。打開一個新標籤迫使我相信一個新的過程,這就是它工作的原因。 –

+1

更好的解決方法:F5 - > F12 - > F12 – tenbits

回答

1

你可以這樣做,但你必須先準備好你的代碼。

說明停止腳本執行在谷歌Chrome瀏覽器開發工具:

(1)創建一個全球變量:

var devquit=0; 
$(document).ready({ 
    //the rest of your code 

(2)任何地方,你可能希望退出,插入一個這個變量的測試:

//Lotsa code 
if (devquit > 0) return false; 

(3)腳本的暫停執行對 - 或之前上述試驗線(S)

(4)切換到控制檯

(5)類型:

> devquit 
0 
> devquit=1 <=== only this line is necessary 
> devquit 
1 

(6)繼續腳本執行。腳本將return false當執行步驟(2)上述


注意測試:

(A)這招工作與全局變量和對象,但它不會與局部變量工作。

(B)因此,你仍然可以使用這一招與已經運行的代碼IF您具有全局變量或對象,將返回false,如果它有一個給定值。 (C)你也可以從DOM中刪除一個元素(在元素選項卡上),這會導致javascript錯誤。例如,假設您的代碼爲var cartype = $('#cartype').val();如果您在該行代碼之前刪除ID = cartype的元素,那麼js將在該行中中斷。但是,當您嘗試重新運行代碼時,元素仍然會丟失。上述技巧允許您無限地運行並重新運行代碼


更多筆記:

(一)插入到斷點代碼:剛上本身就是一個行中鍵入debugger;。如果DevTools處於打開狀態,那麼該腳本將跳轉到調試器中。如果DevTools未打開,代碼將忽略語句。 (b)想要避免在調試代碼時跳入jQuery庫嗎?黑盒子吧。見blackbox instructions for Chrome - 或 - for Firefox


感恩(請訪問並給予好評):

Javascript Debugging line by line using Google Chrome

Is it possible to change javascript variable values while debugging in Google Chrome?