Вам нужно изменить DOM, представляя ваш menupopup.
Например:
<menulist>
<menupopup id="myMenuPopup">
<menuitem id="firstItem" label="Mozilla" value="http://mozilla.org"/>
<menuitem id="secondItem" label="Slashdot" value="http://slashdot.org"/>
<menuitem id="thirdItem" label="Sourceforge" value="http://sf.net"/>
</menupopup>
</menulist>
Теперь, если вы хотите добавить еще один элемент:
var myMenuPopup = document.getElementById("myMenuPopup");
var newItem = document.createElement("menuitem");
newItem.setAttribute("id", "anotherItem");
myMenuPopup.appendChild(newItem);
Если вы хотите удалить предмет:
var itemToRemove = myMenuPopup.getElementById("anotherItem");
myMenuPopup.appendChild(itemToRemove);
Здесь вы можете найти гораздо больше:
https://developer.mozilla.org/en/Dynamically_modifying_XUL-based_user_interface
Edit:
Я предполагаю, что ваша функция возвращает массив имен:
var nameLists = yourFunction();
for (var i=0; i<nameList.length; i++){
var newItem = document.createElement("menuitem");
newItem.setAttribute("label", nameList[i]);
newItem.setAttribute("id", "item" + i);
myMenuPopup.appendChild(newItem);
}
Я думаю, что лучше, если вы вызовете функцию, которая делает элементы до , когда пользователь нажимает на menupopup, а не на вызов события, потому что если у вас много элементов, может потребоваться немного времени для составления списка элементов.