我有一个奇怪的。我想生成附加到工具栏的menupopup的动态内容。如果我只调出一个窗口,这可以很好地工作。如果我提出多个,并点击第二个中的menupopup,它将不会在第一个弹出。如果我先在第一个窗口中显示弹出窗口,它会在那里工作,在第二个窗口中。这是我的重叠代码:
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton
id="personaswitcher-button"
label="&personaswitcher-button.label;"
tooltiptext="&personaswitcher-button.tooltip;"
type="menu">
<menupopup
id="personaswitcher-addon"
onpopupshowing="PersonaSwitcher.buttonPopup (event);"
onpopuphidden="PersonaSwitcher.hideSubMenu();"
/>
</toolbarbutton>
</toolbarpalette>
我可以在所有窗口中看到“PersonaSwitcher.buttonPopup”方法。它动态生成menupopup和menuitems,看似没有问题。有谁知道什么可能是错的或我在哪里可以看?非常感谢!
答案 0 :(得分:0)
你可以发布buttonPopup()
的代码.....
如果您正在使用appendChild()
尝试使用cloneNode()
,那会有帮助吗?
答案 1 :(得分:0)
嘿,我找不到任何ID为BrowserToolbarPalette的东西,所以我使用的是#nav-bar
向浏览器打开暂存器设置环境并粘贴并运行它,它可以正常工作。
var me = Services.wm.getMostRecentWindow(null);
var navBar = document.querySelector('#nav-bar');
var myToolBarButton = document.createElement('toolbarbutton');
var props = {
id: 'personaswitcher-button',
label: 'personaswitcher-button.label;',
tooltiptext: 'personaswitcher-button.tooltip',
type: 'menu'
}
for (var p in props) {
myToolBarButton.setAttribute(p, props[p]);
}
var menuPopup = document.createElement('menupopup');
var props = {
id: 'personaswithcer-addon',
onpopupshowing: 'PersonaSwitcher.buttonPopup (event);',
onpopuphidden: 'PersonaSwitcher.hideSubMenu();'
}
for (var p in props) {
menuPopup.setAttribute(p, props[p]);
}
var myMenuItem = document.createElement('menuitem');
myMenuItem.setAttribute('label','a menu item');
menuPopup.appendChild(myMenuItem);
myToolBarButton.appendChild(menuPopup);
navBar.appendChild(myToolBarButton);
如果以上情况有效,请尝试将叠加层更改为:
<toolbar id="nav-bar">
<toolbarbutton
id="personaswitcher-button"
label="&personaswitcher-button.label;"
tooltiptext="&personaswitcher-button.tooltip;"
type="menu">
<menupopup
id="personaswitcher-addon"
onpopupshowing="PersonaSwitcher.buttonPopup (event);"
onpopuphidden="PersonaSwitcher.hideSubMenu();"
/>
</toolbarbutton>
</toolbarpalette>