Script can attempt to quit a XUL application, or force the application to quit, using the nsIAppStartup interface.
<script> function quit (aForceQuit) { var appStartup = Components.classes['@mozilla.org/toolkit/app-startup;1']. getService(Components.interfaces.nsIAppStartup); // eAttemptQuit will try to close each XUL window, but the XUL window can cancel the quit // process if there is unsaved data. eForceQuit will quit no matter what. var quitSeverity = aForceQuit ? Components.interfaces.nsIAppStartup.eForceQuit : Components.interfaces.nsIAppStartup.eAttemptQuit; appStartup.quit(quitSeverity); } </script>
Calling this function if there is an uncaught exception, to force the application to quit:
<script> try { doSomething(); } catch (e) { quit(true); } </script>
The "Quit" menuitem should typically prompt the user if there is unsaved data:
<menuitem label="Quit" oncommand="quit(false);"/>