appendChild в аддоне XUL Firefox ломается

Я работаю над надстройкой Firefox, и в настоящее время мне нужно динамически добавлять пункты меню в элемент menupopup. Я пробовал в основном все подходы в Центре разработчиков Mozilla, и ни один из них не работает.

    function populateDropdown() {
    var counter = 0;
    for (var key in services) {
        var newMenuItem = document.createElementNS("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul", "menuitem");
        newMenuItem.setAttribute("label", services[key]['title'])

        document.getElementById("mainDropdown").appendChild(newMenuItem);
    }
}

Этот код прерывается командой appendChild. Есть идеи, почему?


person Community    schedule 18.06.2009    source источник
comment
Я не думаю, что вам нужно использовать createElementNS. Это уже документ XUL, поэтому createElement по умолчанию должен просто создать элемент XUL.   -  person MatrixFrog    schedule 09.07.2010
comment
@Gryllida да, я так думаю, или, в более общем смысле, для вставки тегов в одно пространство имен в документ с другим пространством имен.   -  person MatrixFrog    schedule 04.12.2012


Ответы (1)


Вы на 100 % уверены, что document.getElementById("mainDropdown") возвращает ненулевой результат?

Попробуйте разбить его на части и добавить немного отладочного кода:

var dropDown = document.getElementById("mainDropdown");
if(dropDown) {
  alert("dropDown found!");
  dropDown.appendChild(newMenuItem);
}
person Community    schedule 19.06.2009