如何调试Firefox扩展

时间:2011-07-28 07:21:45

标签: javascript firefox firefox-addon xul

我最近一直在进行Firefox扩展开发,遇到了一些问题:

所以,在browser.xul中我定义了这些行:

<overlay id="sample" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script src="jquery.js" />
    <script src="global.js" />
</overlay>

所以,在global.js中,我可以访问所有jQuery内容,并尝试在那里加载一个简单的脚本:

var inner = null;
var o = function () {
    var prefManager = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
    return {
        init : function () {
            alert('here loading inner..');
            $.get('http://www.example.com/script.js', function(d) {
                alert('loaded inner script!');
                inner = d;
                gBrowser.addEventListener("load", function () {
                    alert('onload');
                }, false);
            }).error(function(e) { alert('error loading inner..'); setTimeout(o.init,1000); });
            $(this).ajaxError(function() { alert('ajaxError'); });
        }
    }
}
window.addEventListener("load", o.init, false);

但是我也没有收到“加载的内部脚本”,也没有收到“加载内部错误”警告..​​而且我没有看到错误控制台记录扩展中的任何错误...我假设{{1}由于某些限制可能会默默地失败,但有没有正确的方法来正常调试错误?错误控制台对于扩展名是静默的,它只显示来自网页的错误

2 个答案:

答案 0 :(得分:7)

如果您查看文章https://developer.mozilla.org/en/Setting_up_extension_development_environment,则建议您设置一些偏好设置,包括

javascript.options.showInConsole = true。将chrome文件中的错误记录到错误控制台。

答案 1 :(得分:3)

一般来说,在XUL页面中使用JQuery可能会有问题,因为它假定文档是 HTML DOM而不是 XML DOM,而{{1} }是一个 HTML 窗口,而不是 XUL 窗口。如果我是你,我会使用subscript loader。要调试你可以使用Venkman虽然它有点不稳定,我经常只使用window语句到控制台。

更新:请参阅下面有关Browser Toolbox的评论。

相关问题