为什么FireFox调试器没有显示完整的源代码?

Dan*_*ger 9 javascript debugging firefox

我正在尝试在FireFox v42.0 Windows 10中调试网页,其中该网页通过代理服务器并且代理服务器通过内联<script>...</script>(不包括单独的.js文件)将代码注入其中.当我右键单击View Page Source时,我会看到原始页面加上我期望注入的代码(以及实际运行的代码).我还在Inspector选项卡的DOM视图中看到了注入的内容.它也可以在"响应"部分的"网络"选项卡中看到.但是,当我在调试器中查看同一页面时,注入的代码不可见,就好像页面没有通过代理服务器运行一样.

此外,如果我debugger;在注入的代码中插入一个语句,我会点击断点,但在FireFox调试器选项卡中它告诉我,我在550行的文件中只有173行,根据FireFox.所以我无法单步执行代码.

当我在Chrome中做同样的事情时,我会看到我期待的内容,这是我页面中注入的代码,我可以毫无问题地调试此代码.

我已清除缓存无效.我查看了"网络"选项卡,所有内容都按预期显示.

FireFox如何以及为什么没有向我显示调试器选项卡中的实际页面(匹配View Source或DOM视图中的内容),而不是让我单步执行注入的代码?

Abh*_*tul 20

以下为我工作

  1. 从地址栏中复制 url 并关闭选项卡。
  2. 在私有模式下打开 url,调试器显示源。
  3. 关闭私人窗口并以默认模式打开,调试器现在显示源。

  • 我不敢相信这样的事情能起作用。 (4认同)

Wal*_*alf 19

Firefox 中有一些错误可能导致我自己遇到过这种情况:

  • 一个本地缓存问题,可以通过首先关闭开发工具窗口,硬重新加载页面(Ctrl/Cmd + Shift + R),然后再次打开调试器来解决。
  • 尝试调试容器中的选项卡,但源正在显示页面,因为它会在容器外。请参阅错误1375036)。 现在应该修复这个特殊情况。
  • 与上一点类似,调试器源向您显示一个与浏览器当前实际呈现的文档略有不同/完全不同的文档。这是因为调试器无权访问浏览器用于呈现当前页面的原始标记和内联脚本!显然这种设计方式是为了提高内存效率,但似乎忽略了开发人员想要使用内存来存储源的事实,因为他们想要实际的源。请参阅诸如106073211498351472581 之类的错误

如果发生这种情况,您可以尝试在默认/无容器中进行调试,或者仅在 Chrome 中进行调试。如果您无法在其他浏览器中进行调试,请至少按照其他人的建议“刷新”(核攻击)Firefox之前尝试使用新的配置文件。您可以从about:profiles页面执行此操作(地址必须手动输入或添加书签),或者通过打开带有-P标志的Firefox并创建一个新的。要使用这些标志,请firefox -P --no-remote从 *nix/Mac 终端或C:\Program Files\Firefox Developer Edition\firefox.exe -P --no-remoteWindows 运行对话框运行;该--no-remote标志不是必需的,但允许您在主配置文件旁边运行新配置文件,而忽略在其他程序中单击的链接。

  • 对我来说,问题是“缓存”。关闭调试器,刷新(ctrl-shift-R)并重新打开调试器就可以了。谢谢 (2认同)

tak*_*pan 7

尝试刷新 Firefox:

“刷新 Firefox

  1. 单击菜单按钮,然后单击帮助。

  2. 从帮助菜单中选择故障排除信息。

  3. 单击故障排除信息页面右上角的刷新 Firefox 按钮。

  4. 要继续,请在打开的确认窗口中单击刷新 Firefox。

  5. Firefox 将关闭以刷新自身。完成后,一个窗口将列出您导入的信息。单击完成,Firefox 将打开。”

检查这个以获取更多信息:

https://support.mozilla.org/en-US/kb/refresh-firefox-reset-add-ons-and-settings

我有同样的问题。我按照这些说明解决了它。

  • 我有点绝望,尝试了一下,然后花了几分钟重新设置了 Firefox。而且...它对我的调试问题没有帮助。我不知道为什么他们称其为“刷新”而不是“重置”。与 Chrome 相比,Firefox 在开发工具和 JavaScript 方面的缺陷通常要多得多。:-( (2认同)