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?