Firefox addon 不影响:appShellService.unregisterTopLevelWindow(topXulWindow);(隐藏窗口)

Firefox addon 不影响:appShellService.unregisterTopLevelWindow(topXulWindow);(隐藏窗口),firefox-addon,xul,xpcom,Firefox Addon,Xul,Xpcom,我覆盖chrome://browser/content/browser.xul 使用.xul将一个按钮添加到主菜单。单击它将打开另一个带有.xul窗口的ChromeWindow var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher); var bgwin = ww.openWindow(null, 'chrom

我覆盖chrome://browser/content/browser.xul 使用.xul将一个按钮添加到主菜单。单击它将打开另一个带有.xul窗口的ChromeWindow

var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"].getService(Components.interfaces.nsIWindowWatcher);
var bgwin = ww.openWindow(null, 'chrome://myextension/content/myBrowser.xul', 'MyName', "chrome, resizable=yes, width=1024, height=600, minimizable, maximizable", []);
chrome://myextension/content/myBrowser.xul:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<window id="myextension-my-browser"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
    title="mybrowser"
    windowtype="mybrowser"
    >
    <script type="application/x-javascript" src="chrome://myextension/content/myBrowser.js" />
    <browser id="browser" type="content" flex="1" src="about:blank" />
</window>
我的问题
我做错了什么?为什么窗口没有消失?

用下面的代码片段编写代码

var basewindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  .getInterface(Components.interfaces.nsIWebNavigation)
  .QueryInterface(Components.interfaces.nsIDocShell)
  .QueryInterface(Components.interfaces.nsIDocShellTreeItem).treeOwner
  .QueryInterface(Components.interfaces.nsIBaseWindow);

basewindow.visibility = false;
basewindow.enabled = false;

// now unregister

就这样,谢谢!我还发现,在尝试nsIDOMWindowUtils.sendMouseeEvent单击| mousedown | mouseup |时,需要保持base.enabled为true。。。模拟“点击”。
var basewindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
  .getInterface(Components.interfaces.nsIWebNavigation)
  .QueryInterface(Components.interfaces.nsIDocShell)
  .QueryInterface(Components.interfaces.nsIDocShellTreeItem).treeOwner
  .QueryInterface(Components.interfaces.nsIBaseWindow);

basewindow.visibility = false;
basewindow.enabled = false;

// now unregister