Vivek Deshmukh Ответов: 1

Вызов метода контроллера при закрытии браузера


привет,
Я реализовал окна.onbeforeunload как.
// Body tag is as
<body  önmousedown="BodyClicked()">

window.onbeforeunload = WindowCloseHanlder;
    var isClose = false;
    function WindowCloseHanlder() {
//        alert(document.getElementById('a_TestMe').title);
        if (!isClose) {
                 $.ajax({
                    type: "GET",
                    url: "/Account/LogOff" // the URL of the controller action method
                });
        }
    }
    function BodyClicked() {
        isClose = true;
    }

Метод выход из системы вызывается только в том случае, если я закрываю вкладку, но не на прямом закрытии браузера.

Как мне этого добиться ?

Пожалуйста, направь меня для этого...

F-ES Sitecore

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

Веб не имеет состояния, сервер не знает, есть ли клиент или нет, и все веб-технологии вращаются вокруг этой концепции. Любая попытка поступить иначе обречена на провал.

Richard Deeming

2012! :)

Я предполагаю, что комментатор решения 1 изначально опубликовал свой комментарий как решение, которое вернуло этот вопрос обратно в список "активных".

F-ES Sitecore

Ирония судьбы :D

1 Ответов

Рейтинг:
2

GateKeeper22

Вам нужно вернуть false, если вызов ajax не удался. Правда, когда она успешна. Кроме того, вероятно, было бы хорошо, чтобы вызов ajax не был асинхронным. См. пример ниже. Этот пример может не решить вашу проблему, но он должен помочь вам лучше отследить ее, если она не устранена.

У меня были проблемы с тем, что событие onbeforeunload не всегда срабатывало. Если я правильно помню, он не срабатывает, если пользователь закрывает браузер до полной загрузки страницы. Я не верю, что есть что-то, что вы можете сделать, чтобы решить эту проблему.

function WindowCloseHanlder() {
     var success = false;
     if (!isClose) {     
          $.ajax({
               type: "GET",
               url: "/Account/LogOff",
               async: false,
               error: function (xhr, ajaxOptions, thrownError) {
                    success = false;
               }
               success: function (data) {
                    success = true;
               }
          )};
      }
      return success;
}  


Member 13301772

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

GateKeeper22

Решение не всегда будет работать. Если вы прочтете второй абзац моего ответа, я объясню почему. Извини,что больше ничем не могу помочь.