调试在弹出窗口中运行的JavaScript代码的最有效方法是什么?具体来说,我需要跟踪页面加载时发生的情况。
这适用于在LMS中运行的SCORM 1.2课程,它依赖于父窗口中的其他JavaScript对象,因此调试弹出窗口本身不起作用。
虽然我的大部分时间都在调试这些课程,但我可以将技术用于其他环境。
我可以在浏览器中调试器中使用类似于选项的东西,该选项会暂停执行弹出页面的第一行JavaScript,就像我在那里放置一个断点一样。 (我不能,或者至少不知道如何在页面开始之后设置断点)
修改
debugger;
语句有效,但仅适用于我控制的代码。我有时需要跟踪在某些弹出窗口打开时运行的JavaScript,并且因为代码已经运行而无法添加断点。
答案 0 :(得分:13)
你可以把魔法
debugger;
在javascript代码中的任何地方声明(我知道的每个调试器都会通过在该行自动设置断点来暂停)。
如果这也没有帮助,我只是“在新窗口/标签页中打开该页面”并自行设置断点或使用debugger;
答案 1 :(得分:5)
扩展@ jAndy的答案,我发现Fiddler的AutoResponder是一种有效的方法,可以在你无法控制的代码中输入debugger;
语句或其他有用的调用。
类似的东西:
debugger;
语句或其他任何内容。现在,浏览器将加载文件的本地版本而不是网站。可能还有其他方法可以在浏览器中替换本地文件中的远程URL(Charles也有类似AutoResponder和Proxomitron的东西,我不知道是否有一个浏览器插件可以做到这一点,但像Greasemonkey这样的东西也可能工作)。
答案 2 :(得分:2)
在Chrome中:加载弹出窗口,当它仍在加载时,将其聚焦,快速按F12(打开开发人员工具),然后按F8。
答案 3 :(得分:2)
从2016年开始,Chrome浏览器现在在ChromeDevTools设置中将此选项作为选项
https://twitter.com/chromedevtools/status/697993811696291842?lang=en
答案 4 :(得分:0)
我建议通过console
功能将信息输出到控制台。然后,您可以在调试工具中查看此信息,例如Firebug for Firefox或Chrome中内置的调试工具。或者,您始终可以使用alert
进行调试。
或许我对你的问题不了解......
答案 5 :(得分:0)
在Chrome中,您可以将// @sourceURL=myScriptName.js
附加到脚本的末尾,然后在弹出窗口打开时将其加载到Chrome的“检查”中的Sources
标签中。
此外,如果您使用的是ASP.NET MVC,则可以附加@{Write("//@ sourceURL=myScriptName.js");}
以及*.cshtml
文件中的脚本。