1

Тема: HTA: Задержка закрытия окна

Появилась необходимость поставить задержку на закрытие окна приложения. Сделал так:

<html>
<head>
<script type="text/javascript">
function Window_OnBeforeUnLoad() {
	with (new ActiveXObject("WScript.Shell")) {
		Popup("Exit. Wait...", 3, document.title, 64);
	}
}
</script>
</head>
<body onbeforeunload="Window_OnBeforeUnLoad()">
</body>
</html>

Работает. Но один раз задержит закрытие на заданные 3 секунды. Другой раз - на 20. Третий - вообще кнопка с сообщением висит вечно
Собственно вопроса два:
Почему??? и Как поправить?

2

Re: HTA: Задержка закрытия окна

Хм.... Раз 15 проверил. У меня отрабатывает шикарно. Странно. А ОС какая ?

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: HTA: Задержка закрытия окна

Данная проблема обнаружилась в оригинальной проге, при ее запуске в WinXP и Win2003.
На Win7 никогда такого не видел.
Написал этот маленький тест, запустил и, к моему удивлению, кнопка через 3 секунды не сработала и на Win7.
Мое предположение о причинах проблемы:
Событие onbeforeunload возникает при закрытии окна приложения.
Это событие вероятно отслеживают и все внешние ActiveX примененные в проге.
Т.е. в этот момент ActiveXObject("WScript.Shell") теряет жизненные ориентиры и собирается на покой
Его хватает только на то, чтобы показать кнопку с текстом "Exit. Wait..."
Нажать на ней "OK" уже некому, поскольку "WScript.Shell" уже покинул память программы.
Вероятно изложенное выше - бред сумашедшего, но надо же найти какое то объяснение...