【发布时间】:2015-01-17 07:06:43
【问题描述】:
这个答案https://stackoverflow.com/a/10929430/749227 对于这个问题Is possible to debug dynamic loading JavaScript by some debugger like WebKit, FireBug or IE8 Developer Tool? 是用于调试动态脚本的。
我面临的问题是我有一个页面,上面有一个脚本,并且在它加载一个 ajax 请求后,它会返回一些 HTML 和一个放入页面的脚本。添加//# sourceURL=myDynamicDocumentFragment.html 位后,我可以很好地调试动态脚本了。
但是一旦它被加载,最初加载的外部页面的一部分的另一个脚本就会脱轨。我可以在空行上设置断点,但不能在合法行上设置断点。调试器将停止它们,但它不会出现在我期望的代码中。
似乎是开发工具窗口正在显示原始脚本,而调试器本身正在运行其他东西 - 一些更新版本的代码,其中包括外部页面的脚本和稍后添加的动态脚本.或者它只是在显示的行号以及实际运行的代码中映射到什么方面出现问题。
我希望我有一个很好的简单代码 sn-p 来演示这个问题,但我没有。有没有人看过这个,有没有人知道一种让 Chrome '刷新' 开发工具脚本/调试器而不刷新页面的方法? (它必须不刷新页面,因为页面加载时一切正常 - 只有在动态脚本被放入后轮子才会脱落)
注意:我使用 Chrome 进行了标记,因为这就是我正在使用的 (v 38)。我不知道其他浏览器的表现如何。
【问题讨论】:
-
您是否尝试不从 devtools 源代码面板设置断点,而是将
debugger;语句直接插入您的代码中? -
@GlenSwift hm - 这可能有效。这是一个非常不方便的工作流程。我很想看看它脱轨的根本原因是什么 - 治疗原因而不是创可贴症状或解决问题而不是解决它:S 这可能确实比不存在更好不过可以做任何事情 - 感谢您的建议。
-
在你的脚本中使用
console.log。 -
是的,我经常使用
console.log。我想知道的是如何让 Chrome 调试器不丢失它的弹珠:) -
我知道这个问题,看起来这是 Chrome 调试器的问题。前段时间我曾经使用 Firefox 和 Firebug,但我不记得那里是否有效。如果可能的话,最简单的解决方案是将脚本移动到单独的文件中。
标签: javascript google-chrome debugging