Обрабатывать закрытие браузера в JavaScript? - PullRequest
5 голосов
/ 17 июля 2009

Есть ли способ отловить событие закрытия браузера из JavaScript? Я не хочу делать это в событии Page Unload или что-то еще. Это должно быть обработано нажатием кнопки закрытия браузера.

Возможно ли это?

Ответы [ 5 ]

12 голосов
/ 17 июля 2009

Нет. У вас есть только событие onbeforeunload, доступное как сырой javascript (jquery не включает это событие).

Если вы хотите попробовать это, попробуйте опубликовать здесь ответ и, не нажимая кнопку «опубликовать свой ответ», попробуйте закрыть окно браузера.

Это самый близкий способ получить доступ к событию «закрыть окно».

4 голосов
/ 10 мая 2013

Событие onbeforeunload захватывает каждое событие выгрузки, но есть некоторый хитрый способ обработки, если пользователь закрывает браузер нажатием кнопки закрытия, вот пример кода

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
                    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.js"></script>

  <script>
  $(document).ready(function(){

    //handle if your mouse is over the document body,
    //if not your mouse is outside the document and if you click close button return message or do what you want

    var out = false;
    $("body").mouseover(function(){
      out=false;
    }).mouseout(function(){
      out=true;
    });


    $(window).bind('beforeunload', function(e){
    if(out)
        {return "Do you really want to leave this page now?"}
    });

  });
  </script>

</head>
<body>
  <p>   
    <a href="http://cssbased.com">go outside</a>
    <br>
    <a href="test.html">reload page</a>
    <span> </span>
  </p>
</body>
</html>
3 голосов
/ 25 апреля 2013

Вот хорошая статья об этом от 4guysfromrolla

    <script language="JavaScript">
        window.onbeforeunload = confirmExit;
        function confirmExit()
        {
            return message to display in dialog box;
        }
    </script>
0 голосов
/ 15 октября 2018

вы не можете вызвать оповещение или любой интерфейс (например, открыть модальное диалоговое окно или что-то еще!) При закрытии, но вы наверняка делаете что-то в фоновом режиме с помощью этой функции

window.onunload = function()
        {
            if ((window.event.clientX < 0) || (window.event.clientY<0)) // close button
            {
                //do something on closing event
            }
            else if (window.event.altKey == true) // ALT + F4
            {
                //do something on closing event
            }
            else // for all other unload events
            {
                //do something on closing event
            }
        }
0 голосов
/ 17 июля 2009

Не совсем. Событие выгрузки страницы - это все, что у вас есть. И даже это не всегда. Это дало бы возможность очень сильно мешать пожеланиям пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...