首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Google Chrome中调试时终止脚本执行?

如何在Google Chrome中调试时终止脚本执行?
EN

Stack Overflow用户
提问于 2012-10-30 15:51:14
回答 8查看 205.6K关注 0票数 243

在单步执行Google Chrome调试器中的JavaScript代码时,如果我不想继续,如何终止脚本执行?我找到的唯一方法就是关闭浏览器窗口。

按“重新加载此页面”将运行其余代码,甚至可以像按F8“继续”一样提交表单。

更新

在暂停脚本的情况下按F5 (刷新)时:

  • 谷歌浏览器(v22)运行该脚本。如果脚本提交HTTP请求,则会显示该请求的HTTP响应。未刷新原始页面。
  • IE 9只是冻结。然而,IE有一个“停止调试”选项,当按下这个选项时(假设你之前没有按F5 ),它会继续在debugger.
  • Firebug之外运行脚本,运行方式与Chrome相同。

关闭然后再打开浏览器窗口并不总是下一个最简单的方法,因为它会杀死浏览器会话状态,这可能很重要。您的所有断点也将丢失。

更新(2014年1月)

调试时刷新:

刷新Chrome v31:允许脚本运行并在进一步的断点处停止(但不提交ajax请求),然后refreshes.

  • IE 11: continue.

  • Firefox不执行任何操作,但您可以按F5 to Chrome v26:允许脚本运行但不在进一步的断点处停止,提交ajax请求,然后刷新。

这是一种进步!

调试时导航到同一页:

  • Chrome v31:与刷新相同。
  • IE 11:终止脚本,启动新的浏览器会话(与关闭和打开Chrome v26相同:不发生任何事情。

juacala还建议了一种有效的解决方法。例如,如果您正在使用jQuery,从控制台运行delete $将在遇到任何jQuery方法时停止执行。我已经在上面所有的浏览器中测试过了,并且可以确认它正在工作。

更新(2015年3月)

最后,经过两年多的时间和近10K的浏览量,Alexander K给出了正确的答案。Google Chrome有自己的任务管理器,它可以在不关闭标签本身的情况下杀死标签进程,保持所有断点和其他东西不变。

我甚至在Chrome v22上测试过BrowserStack.com,发现当时也是这样工作的。

在IE或Firefox中调试时,Juacala的变通方法仍然很有用。

更新(2019年1月)

Chrome Dev Tools终于添加了一种适当的方法来停止脚本执行,这很好(尽管有一点隐藏)。有关详细信息,请参阅James Gentes的答案。

EN

回答 8

Stack Overflow用户

发布于 2020-03-31 21:14:57

2020年4月更新

从Chrome 80开始,当前的答案都不起作用。没有可见的“暂停”按钮-您需要长按“播放”按钮才能访问停止图标:

票数 61
EN

Stack Overflow用户

发布于 2014-01-01 02:26:43

你可以这样做的一种方式是暂停脚本,看看在你当前停止的地方跟随着什么代码,例如:

代码语言:javascript
复制
var something = somethingElse.blah;

在控制台中,执行以下操作:

代码语言:javascript
复制
delete somethingElse;

然后播放脚本:当它试图访问somethingElse时,它将导致致命错误,并且脚本将死亡。瞧,你已经终止了这个脚本。

编辑:最初,我删除了一个变量。这还不够好。您必须删除JavaScript试图访问其属性的函数或对象。

票数 37
EN

Stack Overflow用户

发布于 2017-04-18 04:46:09

如果您在使用debugger语句时遇到这种情况,

代码语言:javascript
复制
debugger;

..。然后我认为页面将一直运行下去,直到js运行时让步,或者下一次中断。假设您处于出错中断模式(暂停图标切换),您可以通过执行以下操作来确保中断发生:

代码语言:javascript
复制
debugger;throw 1;

或者调用一个不存在的函数:

代码语言:javascript
复制
debugger;z();

(当然,如果您正在尝试单步执行函数,这不会有什么帮助,尽管您可能可以在源面板中动态添加一个throw 1z()或类似的东西,按ctrl-S保存,然后按ctrl-R刷新...然而,这可能会跳过一个断点,但如果您处于循环中,则可能会起作用。)

如果您正在执行循环,并且希望再次触发debugger语句,则只需输入throw 1即可。

代码语言:javascript
复制
throw 1;

然后,当你按下ctrl-R时,下一次投掷将被击中,页面将刷新。

(使用Chrome v38测试,大约2017年4月)

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

https://stackoverflow.com/questions/13134723

复制
相关文章

相似问题

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