Firebug 未列出所有 javascript 模块

Posted

技术标签:

【中文标题】Firebug 未列出所有 javascript 模块【英文标题】:Firebug not listing all javascript modules 【发布时间】:2015-03-05 15:33:33 【问题描述】:

我在让 Firebug(和 Chrome)列出我定义和包含的 javascript 文件/模块时遇到问题。我最近从 Dojo 1.5 切换到了 Dojo 1.9.1 AMD,并按照设计通过 require 协议包含了 javascript 模块。这一直运行良好,直到最近我将 Dojo 配置的“async:true”更改为“async:false”以支持一些仍然需要“dojo.require”被识别和支持的遗留代码。将 Dojo 配置更改为“async:false”允许“dojo.require”调用工作,但不知何故破坏了 Firebug 和 Chrome“查看”加载的 javascript 模块的能力。我只是暂时将配置切换回“async:true”以验证 Firebug 是否成功列出了 javascript 模块,所以这绝对是导致效果的原因。

JSP 页面的功能似乎仍按预期运行 - 因此 JavaScript 模块根据需要包含在内,但是当我尝试从 Firebug 查看它们并在其中设置断点时 - 它们没有列出。如果我搜索出现在其中一个中的特定字符串,那么 Firebug 将成功找到 javascript 代码,但显示它“位于”以下标题下:

/dojo/1.9.1/dojo/dojo.js.uncompressed.js 328行>函数1行>eval(2)

而不是实际的文件/模块名称。我无法从这个视图设置断点,但如果我添加一个“调试器;”插入 javascript 文件,然后 Firebug 将在执行期间停止在该位置 - 这不是理想的解决方法。

知道为什么在 Firebug 中从“async:true”切换到“async:false”会导致这种行为吗?

谢谢。任何帮助表示赞赏。

【问题讨论】:

我后来发现了一个类似的问题:***.com/questions/2627844/… 但它添加 Dojo 配置属性“debugAtAllCosts:true”的解决方案对我没有任何影响。 debugAtAllCosts 在 1.6 之后不再存在。将asynctrue 切换到false 将加载程序从脚本注入切换到同步XHR + eval,我猜开发工具在处理这个问题时遇到了问题。它适用于1.5吗? (那通常也会使用同步 XHR + eval。) 感谢您的回复。当我使用 1.5 时,我没有任何 JavaScript 模块,所以这对我来说是一个新的领域。 【参考方案1】:

你必须像这样将 has:'dojo-firebug': true 添加到你的 dojoConfig 中:

<script type="text/javascript">
    var dojoConfig = 
        has: 
            'dojo-firebug': true
        
    ;
</script>

你也可以这样添加:

<script type="text/javascript"
        src="your_dojo_src_path_here"
        data-dojo-config="has:'dojo-firebug':true">
</script>

【讨论】:

感谢您的回复。我试过你的建议,但没有任何影响。我搜索了那个 dojo-firebug 属性,发现它似乎只对为旧版本的 Internet Explorer 生成 Firebug lite UI 有用;如果 Firebug 已经可用(就像在我的 Firefox 中一样),则该属性无效。在这里解释得更好:dojotoolkit.org/documentation/tutorials/1.8/dojo_config

以上是关于Firebug 未列出所有 javascript 模块的主要内容,如果未能解决你的问题,请参考以下文章

Firebug - 断点未命中

如何在 Firebug 中编辑 JavaScript?

使用JQuery&Firebug列出JQuery函数

从 PhaseListener 添加消息

为啥 Firebug 不为未定义的属性显示“未捕获的类型错误”?

ReferenceError:用户未定义 rails + 主干 + firebug