我不是 100% 确定我是否完全理解你的问题,但我会尽力给我 2 美分。
我的方法不能帮助您从与您正在使用的文件不同的 xul 文件中获取元素,即使这可能,我也不知道。
当我想多次使用一个大元素时,我通常会做什么,比如当我想创建richlistboxitems时,我做的是:
我为这些项目创建了一个模板:
<richlistbox id="richlistbox"/>
<richlistitem id="richListItemTemplate" hidden="true">
<listcell class="classOne" label="one" width="50"/>
<listcell class="classTwo" label="two" width="80"/>
</richlistitem>
请注意,我隐藏了模板。
然后当我加载包含richlistbox的面板或页面时,我会动态填写它们:
for(var i = 0; i < elements.length; i++) {
var item = document.getElementById("richListItemTemplate").cloneNode(true);
item.removeAttribute("id");
item.removeAttribute("hidden");
item.getElementsByClassName("classOne")[0].setAttribute("label",elements.value);
item.getElementsByClassName("classTwo")[0].setAttribute("label",elements.value);
document.getElementById("richlistbox").appendChild(item);
}
这样,您将克隆原始元素,删除 id,但您可以通过该元素内唯一的 className 访问它的子元素。
也许你可以对你的按钮做同样的事情。您创建一个buttonTemplate
with id="myButtonTemplate"
and hidden="true"
,当您想将它附加到一个元素时,您执行一个 buttonTemplate.cloneNode(true) (因为您想要所有子元素),您按照您想要的方式对其进行自定义,然后将其附加到你想要的元素。
希望这对您有所帮助。