chrome:如何中止在“调试器”语句处停止的脚本



考虑以下愚蠢的例子:

<!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 Chrome 的 DevTools 运行此代码,调试器会尽职尽责地在 debugger 语句处停止执行,但我还没有找到任何立即中止(并重新启动)脚本的方法。 AFAICT,按Ctrl-R甚至Shift-Ctrl-R,而不是重新加载页面,只会导致执行继续。

我发现的唯一办法是显而易见的,但不必要地不方便:完全杀死选项卡/窗口,然后打开一个新选项卡/窗口。

Google Chrome DevTools 是否提供了某种方法来立即中止在 debugger 语句处停止的脚本?

(如果答案恰好是"否",请不要发布解决方法。 我可以想到很多,例如按住 F-8 直到循环退出,尽管这当然行不通,如果循环结果是无限循环。 无论如何,这里我只对是否有"官方"方法来中止和重新启动这样的脚本感兴趣。

你可以这样做,但你必须先准备你的代码。

在 Google Chrome 开发者工具中停止脚本执行的说明:

(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 库?黑匣子吧。请参阅适用于 Chrome 的黑盒说明 - 或 - 适用于 Firefox


感谢(请访问并点赞):

Javascript使用谷歌浏览器逐行调试

是否可以在谷歌浏览器中调试时更改javascript变量值?

最新更新