为什么noautohide不在XUL面板中工作?

时间:2011-11-25 06:01:39

标签: javascript firefox firefox-addon xul

我正在开发一个Firefox扩展程序,试图让一个面板覆盖一个浏览器元素。这是我的javascript代码:

var panel = oldTabBrowser.contentDocument.createElement('panel');
panel.setAttribute('noautohide','true');
var label = oldTabBrowser.contentDocument.createElement('label');
label.setAttribute('value','my text');
panel.appendChild(label);
elem.appendChild(panel);
panel.openPopup(elem, "overlap",0,0);
alert(panel.getAttribute('noautohide'));

noautohide属性设置正常,面板按预期显示,但点击任意位置,面板消失。我错过了什么?

1 个答案:

答案 0 :(得分:2)

我强烈怀疑noautohide属性无法正常工作。至少对于<xul:tooltip>,结果不是我预期的结果。但是,您可以使用popuphiding event确保您的面板不会过早关闭:

var canClose = false;
panel.addEventListener("popuphiding", function(event)
{
  if (!canClose)
  {
    // Too early to close, prevent it
    event.preventDefault();
  }
}, false);
panel.openPopup(elem, "overlap",0,0);

...

// Now it is ok to close
canClose = true;
panel.hidePopup();