【发布时间】:2012-10-19 12:58:15
【问题描述】:
在 Google Chrome 调试器中单步执行 JavaScript 代码时,如果我不想继续,如何终止脚本执行?我发现的唯一方法是关闭浏览器窗口。
按“重新加载此页面”会运行其余代码,甚至可以像按 F8“继续”一样提交表单。
更新:
在脚本暂停时按 F5(刷新):
- Google Chrome (v22) 运行脚本。如果脚本提交 HTTP 请求,则会显示该请求的 HTTP 响应。原始页面未刷新。
- IE 9 只是冻结。但是 IE 有一个“停止调试”选项,当按下它时(前提是您之前没有按 F5),它会继续在调试器之外运行脚本。
- Firebug 的行为与 Chrome 相同。
关闭然后再次打开浏览器窗口并不总是最简单的方法 因为它会杀死浏览器会话状态,这可能很重要。您的所有断点也会丢失。
更新(2014 年 1 月):
调试时刷新:
- Chrome v31:允许脚本在更多断点处运行和停止(但不提交 ajax 请求),然后刷新。
- IE 11:刷新不执行任何操作,但您可以按 F5 继续。
- Firefox v26:允许脚本运行但不会在更多断点处停止,提交 ajax 请求,然后刷新。
有点进步!
调试时导航到同一页面:
- Chrome v31:与刷新相同。
- IE 11:脚本终止,新的浏览器会话开始(与关闭和再次打开相同)。
- Firefox v26:没有任何反应。
juacala 还提出了一个有效的解决方法。例如,如果您使用 jQuery,从控制台运行 delete $ 将在遇到任何 jQuery 方法时停止执行。我已经在上述所有浏览器中进行了测试,可以确认它可以正常工作。
更新(2015 年 3 月):
最后,经过 2 年多和近 1 万次浏览,Alexander K 给出了正确答案。谷歌浏览器有自己的任务管理器,它可以杀死一个标签进程而不用关闭标签本身,保持所有断点和其他东西都完好无损。
我什至跑到 BrowserStack.com 在 Chrome v22 中对其进行测试,发现即使在当时也是如此。
在 IE 或 Firefox 中调试时,Juacala 的解决方法仍然有用。
更新(2019 年 1 月):
Chrome 开发工具最后添加了一种停止脚本执行的正确方法,这很好(虽然有点隐藏)。有关详细信息,请参阅 James Gentes 的回答。
【问题讨论】:
-
在开发工具控制台中输入
debugger;,它会立即将内容放入调试器并停止脚本。 -
James Gentes 的回答似乎是 2019 年更好的解决方案
-
为什么大家都在谈论停止脚本?这是关于终止/破坏所有“跟随/计划”的代码。
-
同意 Andre:对于希望终止当前执行 Javascript 而不会丢失窗口的人 - 下面的 Dan Dascalescu 给出了答案。
-
@Jake 你拯救了我的一天...简单但直接...非常感谢...
标签: javascript debugging google-chrome-devtools