Почему noautohide не работает в панели XUL? - PullRequest
0 голосов
/ 25 ноября 2011

Я разрабатываю расширение 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 Ответ

2 голосов
/ 25 ноября 2011

У меня есть сильное подозрение, что атрибут noautohide работает неправильно. По крайней мере, для <xul:tooltip> результат не тот, который я ожидал. Однако вы можете убедиться, что ваша панель не закрывается преждевременно, используя popuphiding событие :

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();
...