Как отладить расширение Firefox - PullRequest
7 голосов
/ 28 июля 2011

Я недавно занимался разработкой расширений 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);

Но я не получаю ни «загруженный внутренний скрипт», ни предупреждение «ошибка загрузки внутреннего». И я не вижу консоль ошибок, чтобы регистрировать ошибки из расширения ... Я предполагаю, что $.get молчаливая ошибка из-за некоторых ограничений, может быть, но есть ли правильный способ отладки ошибок нормально? Консоль ошибок молчит для расширения, она показывает только ошибки с веб-страниц

Ответы [ 2 ]

7 голосов
/ 28 июля 2011

Если вы посмотрите статью https://developer.mozilla.org/en/Setting_up_extension_development_environment, она предлагает настроить некоторые параметры, в том числе

javascript.options.showInConsole = верно. Записывает ошибки в файлах Chrome на консоль ошибок.

3 голосов
/ 28 июля 2011

В общем случае использование JQuery на странице XUL может быть проблематичным, поскольку предполагается, что документ представляет собой HTML DOM, а не XML DOM и что window является HTML окно, а не XUL окно. На вашем месте я бы использовал для этого индексный загрузчик . Для отладки вы можете использовать Venkman , хотя это немного ненадежно, и вместо этого я часто прибегаю к просто dump() инструкциям для консоли.

Обновление: см. Мой комментарий ниже о Browser Toolbox .

...