考虑以下愚蠢的例子:
<!doctype html>
<meta charset="utf-8">
<title>dumb snippet</title>
<script>
var i = 0;
while (i < 100) {
console.log(i);
debugger;
i += 1;
}
</script>如果我使用Google的DevTools运行这段代码,调试器就会尽职尽责地在debugger语句处停止执行,但我没有找到任何方法立即中止(并重新启动)脚本。AFAICT按下Ctrl-R甚至Shift-Ctrl-R,而不是重新加载页面,只会导致执行继续进行。
我发现的唯一方法是显而易见的,但不必要地不方便:完全关闭选项卡/窗口,然后打开一个新窗口。
Google是否提供了某种方式来立即中止在debugger语句下停止的脚本?
(如果答案恰好是“否”,请不要发表文章。我可以想到很多,例如,在循环退出之前保持F-8,当然,如果循环结果是一个无限循环的话,这是行不通的。无论如何,这里我只关心是否有一种“官方”方式来中止和重新启动这样的脚本。)
发布于 2015-04-01 14:32:02
您可以这样做,但您必须首先准备代码。
在Google中停止脚本执行的说明:
(1)创建一个全局变量:
var devquit=0;
$(document).ready({
//the rest of your code(2)在任何你可能想退出的地方,加入本变数的测试:
//Lotsa code
if (devquit > 0) return false;(3)在上述测试行之前暂停脚本的执行。
(4)切换到控制台
(5)类型:
> devquit
0
> devquit=1 <=== only this line is necessary
> devquit
1(6)继续脚本执行。脚本在执行上面步骤(2)中的测试时会return false
备注:
(A)这个技巧适用于全局变量和对象,但不适用于局部变量。
(B)因此,您仍然可以在已经运行的代码中使用这个技巧,如果您有一个全局变量或一个对象,如果它有给定的值,则返回false。
(C)在紧急情况下,您还可以从DOM中删除一个元素(在元素选项卡上),这将导致javascript错误。例如,假设您有代码var cartype = $('#cartype').val();,如果在该代码行之前删除带有ID=cartype的元素,那么js将在该行上中断。然而,当您尝试重新运行代码时,元素仍然会丢失。上面描述的技巧允许您无限地运行和重新运行代码。
更多说明:
(a)在代码中插入断点:只需在一行中单独键入debugger;即可。如果DevTools是打开的,脚本就会跳转到调试器中。如果DevTools未打开,代码将忽略语句。
(b)要避免在调试代码时跳入jQuery库?黑盒。见铬黑盒说明 -或- 用于Firefox
感谢(请访问并投票):
https://stackoverflow.com/questions/19625087
复制相似问题