Вызовите некоторый JavaScript, когда пользователь закрывает окно (всплывающее окно)

Можно ли вызвать некоторые JS, когда пользователь закрывает окно?

Я искал обработчики событий JS и нашел только onunload, который вызывает скрипт всякий раз, когда пользователь покидает страницу, не обязательно закрывая окно.

Предполагаемое использование заключается в вызове сценария AJAX, который отключает несколько сеансов, относящихся к всплывающему окну. Может быть, возможно, нет лучшего способа достижения этой цели?

Я нашел этот поток DevShed, в котором говорится, что это возможно через JS, но он не объясняет, как именно вызвать скрипт.

К сожалению, в большинстве поисковых систем Google для решения этого вопроса возникает окно .close, что фактически противоположно тому, что мне нужно!

Следующий код работает в Firefox, IE 8 и Google Chrome.

В открывшемся окне

<script src="http://ajax.googleapis.com/ajax/libs/mootools/1.2.3/mootools-yui-compressed.js"></script> <script> function on_popup_close(){ //put your code here alert('it closed'); } </script> 

В всплывающем окне

 <script> function inform_parent(){ opener.on_popup_close(); } window.onbeforeunload = inform_parent; </script> 

Первая строка в коде для окна открытия может быть вашей любимой структурой, которая реализует оператор знака доллара.

Смотрите мое демо здесь

вы можете проверить из родительского окна, если дочернее окно все еще существует (например, проверить каждые 100 мс или около того) и запустить сценарий, если нет …

Посмотрите на свойство window.opener . За исключением IE, он имеет довольно хорошую поддержку . Вы можете использовать его для вызова некоторых функций javascript в своем родительском окне перед window.close() всплывающем окне.

Не знаю, работает ли это на практике, но если проблема связана с внутренними страницами, почему бы не задавать глобальную переменную какого-либо типа всякий раз, когда ссылка нажимается на странице и проверяется на это onunload?

Что-то вроде (извините jQuery, я очень ленив):

 INTERNAL_CLICKED = false; $("a").click(function() { INTERNAL_CLICKED = true; }); window.onunload = function() { if(!INTERNAL_CLICKED) { // perform window unload code } } 

Повторить, полностью непроверенный, но кто знает – он может просто работать для вас. Хотя, я бы остерегался, это, вероятно, будет срабатывать и при обновлении.

Привет Вы можете использовать следующую функцию в событии onbeforeunload запущенном window непосредственно перед window onbeforeunload

 window.onbeforeunload = function () { // stuff do do before the window is unloaded here. } 

дайте мне знать, если это не решит проблему ur probelm