Есть две разные вещи, которые вы можете:
1) побуждение, когда окно закрыто. Вы можете использовать событие «закрыть», например:
<!-- Creates an unclosable window -->
<window onclose="return false" ...>
Я просто проверил его, и он действительно работает.
2) запрос, когда приложение собирается завершить работу. Вы можете сделать это, наблюдая уведомление quit-application-requested через службу nsIObserverService (example).
(1) ближе к тому, что вы спросили, так как, когда пользователь нажимает на кнопку [X] в окне, последовательность событий такова:
- «закрыть» событие отправляется в окно
- Если ничего не помешало, окно закрывает окно
- , если окон не осталось, и это не Mac OS X, приложение начинает закрываться, отправляется запрос на отправку заявки.
- Если ни один из наблюдателей не отклонил запрос на выход, завершение работы продолжается.
С другой стороны, если вы поставите чек только в OnClose обработчик окна, другие способы выхода из приложения (File-Exit на Win/-QUIT на Mac) может вызвать слишком поздно (например, после закрытие других окон). Кроме того, если ваше приложение может иметь более одного «основного» окна (с логикой onclose), пользователю придется иметь дело с несколькими подтверждениями, которые могут быть или не быть такими, какие вы хотите.
Вот некоторые ссылки на код Firefox (если я не хватает чего-то, она также должна быть упакована с приложением), вы можете исследовать и использовать подход, примененный:
Спасибо Nickolay. Это была ошибка с моей стороны. Я сделал что-то вроде и вернул false из функции. Очевидно, это не сработало. –
Ranjith