【发布时间】:2012-01-31 16:58:58
【问题描述】:
我正在开发一个 Firefox 扩展程序,我希望能够自行关闭 Firefox 窗口(无需任何确认)。例如,如果已加载特定 URL,我想关闭 firefox 窗口。使用gBrowser打开/关闭标签很容易,关闭firefox窗口怎么样?
谢谢
【问题讨论】:
标签: firefox firefox-addon xul
我正在开发一个 Firefox 扩展程序,我希望能够自行关闭 Firefox 窗口(无需任何确认)。例如,如果已加载特定 URL,我想关闭 firefox 窗口。使用gBrowser打开/关闭标签很容易,关闭firefox窗口怎么样?
谢谢
【问题讨论】:
标签: firefox firefox-addon xul
Components
.classes['@mozilla.org/toolkit/app-startup;1']
.getService(Components.interfaces.nsIAppStartup)
.quit(Components.interfaces.nsIAppStartup.eAttemptQuit)
var boot = Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(Components.interfaces.nsIAppStartup);
boot.quit(Components.interfaces.nsIAppStartup.eForceQuit|Components.interfaces.nsIAppStartup.eRestart);
eConsiderQuit :如果所有窗口都关闭则尝试退出。
eAttemptQuit :尝试关闭所有窗口,如果成功则退出。
eForceQuit :强制关闭所有窗口,然后退出。
eRestart :退出后重新启动应用程序。应用程序将使用相同的配置文件和空命令行重新启动。
【讨论】:
这听起来很明显,但您使用window.close() 来关闭 XUL 窗口。至于警告,最好的方法可能是暂时将browser.tabs.warnOnClose 偏好切换为false。像这样的东西应该可以工作:
Components.utils.import("resource://gre/modules/Services.jsm");
var prefName = "browser.tabs.warnOnClose";
var restorePref = false;
if (Services.prefs.getBoolPref(prefName))
{
Services.prefs.setBoolPref(prefName, false);
restorePref = true;
}
window.close();
if (restorePref)
Services.prefs.setBoolPref(prefName, true);
【讨论】: