Многие программы запрашивают пользователей, если они действительно хотят выйти после нажатия кнопки выхода из окна (большой красный X в верхнем правом углу окна). В приложениях HTML (HTA-файлы) мы можем это сделать.Отменить HTA закрыть после того, как пользователь нажимает кнопку закрытия
Однако, я не знаю, как отменить событие закрытия, которое происходит после onbeforeunload. Я попытался event.preventDefault(), event.stopPropagation(), event.cancelBubble = истина, window.event.bubbling = ложь, возвращают ложные, но ни работал.
Пример:
<head>
<title>Cancel Close</title>
</head>
<script type="text/javascript">
function ask() {
var answer = confirm("Quit program?");
if (answer) {
alert("Exiting...");
} else {
//window.event.preventDefault(); //method does not exist
//window.event.stopPropagation(); //method does not exist
window.event.cancelBubble = true; //quits anyway
window.event.bubbling = false; //quits anyway
return false; //quits anyway
}
}
</script>
<body bgcolor="#ECE9D8" style="overflow:auto" onbeforeunload="ask()">
Some HTML... Click exit and cancel; the program exits anyway, but should not.
</body>
Как отменить операцию закрытия, если пользователь нажимает отменить?
используйте более высокую версию IE с ребро мета. IE10 + позволяет использовать реальные события. вам также необходимо привязать _beforeunload_ к _window_, а не
. вам также нужно вернуть строку в onbeforeunload, которую пользователь может видеть. – dandavisЕсли бы сложно было понять, что делать в соответствии с вашими комментариями, но, наконец, удалось это сделать. Новое окно, по умолчанию из IE, появляется, пытаясь подтвердить, действительно ли я хочу выйти, но опять же, независимо от того, отменяется или нет, он завершает работу. –
вот что я боялся, извините. ну, по крайней мере, с лучшим IE у вас есть больше возможностей ... Одна последняя идея: в зависимости от вашего приложения вы можете сериализовать все состояние onunload, а затем перезапустить новое приложение со всеми теми же настройками из события onunload. убедитесь, что параметр «singleinstance' HTA» является ложным, если вы хотите это сделать. Таким образом, приложение все еще закрывается, но кажется, что он просто мигает. – dandavis