2013-05-23 4 views
18

Не могли бы вы дать мне лучший способ обнаружить только окно закрыть событие для все браузеры от jquery?Обнаружение Закрыть окно событие JQuery

Я имею в виду нажатие кнопки X в браузере или окно.close(), а не значение F5, подача формы,window.location или ссылка. Я искал много потоков, но не нашел правильный путь.

Большое спасибо за поддержку.

ответ

7

Там нет определенного события для захвата браузера события закрытия.

Вы можете снимать только при выгрузке текущей страницы.

С помощью этого метода это будет выполняться при обновлении/навигации по текущей странице.

Даже вычисление X Y события мыши не дает вам хорошего результата.

33

Вы можете использовать:

$(window).unload(function() { 
    //do something 
} 

Выгрузить() является устаревшим в JQuery версии 1.8, так что если вы используете JQuery> 1.8 вы можете использовать даже beforeunload вместо этого.

Событие beforeunload срабатывает, когда пользователь покидает вашу страницу по любой причине.

$(window).bind("beforeunload", function() { 
    return confirm("Do you really want to close?"); 
}) 

Источник Browser window close event

Для последних версий JQuery рекомендуется использовать.() Вместо .bind()

+0

Может также прочитать http://stackoverflow.com/questions/1594548/dom-window-unload-event-is-it-reliable – thefrontender

+0

Это не работает для меня. Я видел эти решения раньше. –

+1

Прочитайте этот ответ http: // stackoverflow.com/a/3888938/1827690 – mjimcua

9

Метод unload() устарел в версии 1.8 для jQuery.

так что если вы используете версии старше 1.8

затем использовать -

$(window).unload(function(){ 
alert("Goodbye!"); 
}); 

и если вы используете 1.8 и выше

затем использовать -

window.onbeforeunload = function() { 
    return "Bye now!"; 
}; 

надежду это будет работать :-)

+0

В Firefox пользовательские сообщения не работают. –

3

Не существует конкретного события для захвата события закрытия браузера. Но мы можем обнаружить позиции браузера XY.

<script type="text/javascript"> 
$(document).ready(function() { 
    $(document).mousemove(function(e) { 
    if(e.pageY <= 5) 
    { 
     //this condition would occur when the user brings their cursor on address bar 
     //do something here 
    } 
    }); 
}); 
</script> 
+0

Привет! Я отредактировал ваше сообщение, чтобы поместить весь HTML в формат кода, поскольку он неправильно обрабатывался как HTML-теги и не отображался. В будущем обратите внимание на предварительный просмотр, показывающий, как будет выглядеть ваш пост, поскольку ваш ответ может существенно отличаться от ожидаемого! – SuperBiasedMan

1

Объединить MouseMove и window.onbeforeunload событие: - я использовал для набора TimeOut для аудита таблицы.

$(document).ready(function() { 
var checkCloseX = 0; 
     $(document).mousemove(function (e) { 
      if (e.pageY <= 5) { 
       checkCloseX = 1; 
      } 
      else { checkCloseX = 0; } 
     }); 

     window.onbeforeunload = function (event) { 
      if (event) { 
       if (checkCloseX == 1) { 

        //alert('1111'); 
        $.ajax({ 
         type: "GET", 
         url: "Account/SetAuditHeaderTimeOut", 
         dataType: "json", 
         success: function (result) { 
          if (result != null) { 
          } 
         } 
        }); 
       } 
      } 
     }; 
    });