Как перехватить событие на закрытие окна

Обсуждение вопросов клиентского программирования.

Модератор: Duncon

Ответить
Bloody ST@R
Сообщения: 37
Зарегистрирован: 19 фев 2004, 06:50

Привет всем!

Хочется сделать такую штуку: ЕСть окно, при его закрытие должен появлять диалог Да/Нет. Если нет, тогда закрывать нельзя. Я вроде написал, да не работает :-( Не удается перехватить событие.

Код: Выделить всё

<script language="JavaScript" type="text/javascript">
// Handle close window Event

var errMsg = "Test";

function logout(){

if(confirm(errMsg) == false){
alert("Window closed"); 
window.event.returnValue = false;
}else{ 
alert("Window no closed"); 

} 

}


// Catch window closings and logout
 function o(){

if((window.event.clientX<0) || (window.event.clientY<0)) 
 logout();

}

</script>

<html>
<body onunload="o()">

</body>
</html>
alexx
Сообщения: 116
Зарегистрирован: 02 июл 2004, 22:29
Откуда: Hamburg

CM. MSDN:

Код: Выделить всё

<HTML>
<HEAD>
<SCRIPT>
function closeIt()
  {
    event.returnValue = "Any string value here forces a dialog box to \
                        appear before closing the window.";
  }
</SCRIPT>
</HEAD>
<BODY onbeforeunload="closeIt()">
    <a href="http://www.microsoft.com">Click here to navigate to 
        www.microsoft.com</a>
</BODY>
</HTML>
-------------
Лень - двигатель прогресса!
Bloody ST@R
Сообщения: 37
Зарегистрирован: 19 фев 2004, 06:50

Спасибо.
Если возможность собщение, которое возникает при закрытие окна, убрать или вместо него свое выводить?
alexx
Сообщения: 116
Зарегистрирован: 02 июл 2004, 22:29
Откуда: Hamburg

Heт, тoлькo дoбaвить свой тeкcт, тyт:

Код: Выделить всё

event.returnValue = "Blabla!"
-------------
Лень - двигатель прогресса!
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

alexx,

а кроме как ИЕ это ещё где-то работает?
ФФ дружно забил на данный event.

Если можно, было бы интересно посмотреть на кроссбраузерный код.
alexx
Сообщения: 116
Зарегистрирован: 02 июл 2004, 22:29
Откуда: Hamburg

Нет, это MS-фишка. Покапайте DOM-Object Reference, может есть что стандартное...
-------------
Лень - двигатель прогресса!
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

alexx, спасибо!

Нашел решение.
Мозила с 1.7, ФФ - работает, но не знаю с какого, ну и ИЕ.

Код: Выделить всё

<HTML>
<HEAD>
<SCRIPT>

window.onbeforeunload = function (oEvent) {
	document.getElementById('close').src = 'close.php';
       oEvent.returnValue = " ";
  }
</SCRIPT>

<!--[if IE]>
<script>
window.onbeforeunload = function () {
	document.getElementById('close').src = 'close.php';
	window.event.returnValue = " ";
  }
</script>
<![endif]-->
</HEAD>
<BODY>
[url=http://www.google.com]google[/url]
<iframe src="blank.html" id="close" style="border:0; height: 0; width: 0;"></iframe>
</BODY>
</HTML>
вот только сам confirm мне мешает,
и не понятно, нажмёт ли пользователь ок или кансел...
Ответить