Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chrome JavaScript调试-如何通过代码在页面刷新或中断之间保存断点?_Javascript_Debugging_Google Chrome_Breakpoints - Fatal编程技术网

Chrome JavaScript调试-如何通过代码在页面刷新或中断之间保存断点?

Chrome JavaScript调试-如何通过代码在页面刷新或中断之间保存断点?,javascript,debugging,google-chrome,breakpoints,Javascript,Debugging,Google Chrome,Breakpoints,当使用Chrome及其JavaScript调试器时,每次我重新加载页面/脚本时,我的断点都会丢失,我必须在弹出窗口中找到脚本文件,找到断点的代码行,单击以添加它,等等 有没有一种方法可以保存这些断点,这样即使在页面刷新后它也会中断?我使用的其他调试器也会这样做吗 或者,在我的JavaScript代码中是否有一种干净的方法,我可以键入一些东西,告诉chrome开始跟踪以暂停一行?您可以使用调试器;语句,使调试器在那里中断。Chrome开发工具的行为应符合您的预期,但您可以放置调试器;在你的发展中陈

当使用Chrome及其JavaScript调试器时,每次我重新加载页面/脚本时,我的断点都会丢失,我必须在弹出窗口中找到脚本文件,找到断点的代码行,单击以添加它,等等

有没有一种方法可以保存这些断点,这样即使在页面刷新后它也会中断?我使用的其他调试器也会这样做吗


或者,在我的JavaScript代码中是否有一种干净的方法,我可以键入一些东西,告诉chrome开始跟踪以暂停一行?

您可以使用调试器;语句,使调试器在那里中断。

Chrome开发工具的行为应符合您的预期,但您可以放置调试器;在你的发展中陈述!暂停执行的代码。

您可以将

debugger;
打破大多数JavaScript环境。他们肯定会坚持下去。如果您正在使用调试器和console.log调用,最好有一个minifier来RID生产环境的调试器和console.log调用

在最新版本的Chrome浏览器中,控制台面板顶部过滤器旁边有一个保留日志选项。在旧版本中,右键单击空的控制台窗口将显示“导航时保留日志”选项。当您没有console.log语句或硬编码调试器调用时,它非常方便


更新:我在github上找到了一个名为的工具,它获取一个文件并删除所有console.log调用。它提供了一个关于如何删除调试器调用的好主意

设置断点,切换到“网络”选项卡,然后选择“导航时保留日志”切换按钮。现在,刷新时断点应该在那里

或者JavaScript的方式是使用

debugger;

另外,您是否将JavaScript文件从服务器发送到客户端?这用于防止缓存JavaScript文件

在这种情况下,Chrome开发者工具似乎会在刷新后将文件解释为不同的文件,这将正确地删除断点


对我来说,删除查询参数会使CDT在刷新后保留断点。

对于动态加载或从其他脚本评估的脚本,可能会发生这种情况?我可以自己说,在我发现sourceURL属性之前,这种情况真的让我很恼火。将以下特殊格式的注释放在要调试的脚本的最后一行将在Chrome中“锚定”它,因此它有一个参考框架:

//sourceURL=filename.js


手动放置的断点现在将在页面加载之间保持不变!该约定实际上起源于sourcemap规范,但Chrome至少将其视为一种独立的技术。对于使用ExtJs 6.x的用户,这里有一个.

: 您可以向页面的URL添加缓存或disableCacheBuster查询参数,而不是在Ext.Loader中禁用缓存。这将从文件中删除_dc参数,并使chrome调试器能够持久化断点


请参阅应用程序配置参数disableCaching中的bootstrap.js

您可以放置调试器;在要开始调试的代码之前。一旦页面开始加载,它将在调试器处停止;陈述然后,您可以根据需要轻松地应用调试点

Chrome开发者工具应该在刷新之间保留JS断点。您是否使用标记或XMLHttpRequest+eval来包含您的JS?使用XHR+eval,您会丢失断点。+1我每天也会在OSX上的Chrome上遇到这种情况。大多数断点都工作得很好,但是有时候,当我刷新时,断点就无法坚持!如果脚本的?querystring中发生了更改,您也会丢失断点,例如,cachebuster不确定hashThank!ExtJS4包含一个_dc参数以防止文件被缓存,并且每次都会清除断点。添加Ext.Loader.setConfig{disableCaching:false,enabled:true};应用程序配置禁用它。@BrianTopping Thx以获取该提示。他们为什么要做如此愚蠢的事情,比如附加动态查询参数来阻止缓存。浏览器开发工具/服务器应该控制它…@sjogren\u me,你是如何删除Chrome开发工具中的查询参数的?你是个英雄。一些弱开发人员发送了日期“His”查询字符串,这提醒了我!在导航时检查保留日志似乎是让chrome像以前一样工作的真正方法。对于网络工作者来说,这里有一个不错的选择:我忘记了调试器;lol花了大约半个小时试图弄明白。似乎还有其他正式的方法,通过在app.json中为loader.cache设置值:是的,这个答案重复了7年前的几个答案。这就是我需要的答案。其他答案需要更改库行为删除查询参数或接受所有现有断点的丢失只需添加调试器;, 这两个都不是我认为OP想要的。绝对不是我想要的。原因是js文件都有时间戳,这让Chrome中的DevTools感到困惑。谢谢@jtrick,因为我相信这是OPs主要问题的主要答案,有没有办法保存这些断点?