Кажется, я наконец-то понял это. Проблема в том, что у меня был пункт меню, который я пытался редактировать, был , жестко запрограммированный в файле .xul . По какой-то причине это сделало невозможным изменение отключенных или скрытых атрибутов.
Поэтому я удалил элемент меню из файла .xul и динамически создал его в javascript . Теперь он работает точно так, как ожидалось:
var menuitem = document.getElementById('mypopupitem').appendChild(document.createElement('menuitem'));
menuitem.setAttribute('disabled', 'true'); // Works.
menuitem.removeAttribute('disabled'); // Also works.
Кто-нибудь знает, это особенность / причуды XUL, или я просто делаю это неправильно?
ОБНОВЛЕНИЕ: Как отмечалось во многих комментариях, вышеприведенное неверно. Вы абсолютно можете изменить атрибут disabled на элементе, жестко запрограммированном в файле XUL.
После гораздо большей отладки, обработки проблемы до ее основных элементов, удаления волос и т. Д., Это оказалось… опечаткой. Grrr .. Извините.
Оказывается, мой document.getElementById ('menuitem') захватывал элемент XUL, а не элемент. Тот факт, что метод onclick, похоже, срабатывает правильно, возможно, произошел благодаря всплеску событий (я полагаю?). Я до сих пор не представляю, почему setAttribute («label», «change») работал, когда я пытался это сделать, но, к сожалению, из-за безумия отладки, у меня нет этой версии, чтобы проверить снова.
В любом случае, он работает сейчас, без необходимости динамически создавать пункт меню. Спасибо за помощь!