在 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 的答案。