首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >chrome:如何中止在“调试器”语句处停止的脚本?

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

Stack Overflow用户
提问于 2013-10-27 23:44:45
回答 1查看 1.5K关注 0票数 2

考虑以下愚蠢的例子:

代码语言:javascript
复制
<!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,当然,如果循环结果是一个无限循环的话,这是行不通的。无论如何,这里我只关心是否有一种“官方”方式来中止和重新启动这样的脚本。)

EN

回答 1

Stack Overflow用户

发布于 2015-04-01 14:32:02

您可以这样做,但您必须首先准备代码。

在Google中停止脚本执行的说明:

(1)创建一个全局变量:

代码语言:javascript
复制
var devquit=0;
$(document).ready({
    //the rest of your code

(2)在任何你可能想退出的地方,加入本变数的测试:

代码语言:javascript
复制
//Lotsa code
if (devquit > 0) return false;

(3)在上述测试行之前暂停脚本的执行。

(4)切换到控制台

(5)类型:

代码语言:javascript
复制
> 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

感谢(请访问并投票):

使用Google逐行调试Javascript

在Google中调试时,可以更改javascript变量值吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19625087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档