如何调试javascript作为弹出窗口加载?

Dan*_*vak 18 javascript debugging scorm1.2

调试在弹出窗口中运行的JavaScript代码的最有效方法是什么?具体来说,我需要跟踪页面加载时发生的情况.

这适用于在LMS中运行的SCORM 1.2课程,它依赖于父窗口中的其他JavaScript对象,因此调试弹出窗口本身不起作用.

虽然我的大部分时间都在调试这些课程,但我可以将技术用于其他环境.

我可以使用浏览器中的调试器中的一个选项,它会暂停执行弹出页面的第一行JavaScript,就像我在那里放置一个断点一样.(我不能,或者至少不知道如何设置断点,直到页面开始之后)

编辑:

debugger;语句有效,但仅适用于我控制的代码.我有时需要跟踪在某些弹出窗口打开时运行的JavaScript,并且无法添加断点,因为代码已经运行.

jAn*_*ndy 14

你可以把魔法

debugger;
Run Code Online (Sandbox Code Playgroud)

在任何地方声明你的javascript代码(我知道的每个调试器将通过在该行自动设置断点来停止).

如果这也没有帮助,我只是"在新窗口/标签页中打开该页面"并自行设置断点或使用 debugger;

  • 上述解决方案不起作用,因为弹出窗口在没有调试器控制台运行的情况下启动.所以调试器; 命令被忽略. (5认同)

小智 6

从 2016 年开始,Chrome 现在在 ChromeDevTools 设置中将此作为一个选项

https://twitter.com/chromedevtools/status/697993811696291842?lang=en


Dan*_*vak 5

扩展@ jAndy的答案,我发现Fiddler的AutoResponder是一种debugger;在你无法控制的代码中输入语句或其他有用调用的有效方法.

就像是:

  1. 在开始之前清除缓存.
  2. 运行该站点,允许加载您要使用的所有文件.
  3. 确定要篡改的请求,例如要调试的JavaScript文件.
  4. 将该会话从Fiddler导出到本地文件.
  5. 编辑本地文件以添加debugger;语句或其他内容.
  6. 回到fiddler,再次选择请求,然后选择AutoResponder选项卡.
  7. 选择"添加规则",默认情况下会为该确切的URL创建新规则.
  8. 在底部的组合框中,选择查找文件..然后浏览到您篡改的文件.
  9. 确保选中"启用自动回复"和"不匹配的请求直通".
  10. 在浏览器中再次清除缓存,然后重新启动您尝试调试的站点或页面.

现在,浏览器将加载文件的本地版本而不是从站点加载.可能还有其他方法可以在浏览器中用本地文件替换远程URL(Charles也有类似AutoResponder和Proxomitron的东西,我不知道是否有一个浏览器插件可以做到这一点,但像Greasemonkey这样的东西也可能工作).