Лучшее решение или замена window.unload - PullRequest
0 голосов
/ 14 мая 2019

Добрый день,

У меня есть веб-приложение на Java, и я хотел бы сделать что-то вроде следующего после входа в систему:

  1. После входа в систему система отобразит целевую страницу, на целевой странице появится меню вкладок, и есть много модулей, которые можно вызвать из меню вкладок для перехода на другую страницу.
  2. Мне нужно реализовать некоторую логику, когда пользователь пытается перейти на другую страницу, логика будет методом проверки чего-либо и возврата boolean, если boolean истинно, то он направит пользователя на страницу что он нажимает на вкладке навигации. Если boolean имеет значение false, я хочу, чтобы система направляла пользователя на определенную страницу.

Сначала я думаю использовать $(window).unload(), а затем выполнить ajax с моим Java-кодом для выполнения этой логики, однако я обнаружил, что метод unload уже удален из последней jQuery.

После этого я нашел метод beforeunload jQuery. Я использую это и вызываю ajax для кода Java. Тем не менее, я обнаружил, что при вызове ajax он не будет перенаправлять меня на конкретную страницу, если мой boolean, если false, он все равно будет перенаправлять меня на страницу, которую я нажимаю.

** Моя jQquery версия - jQuery v1.12.4, и я использую Stripes для кода сервера **

Любое предложение или лучшее решение для этого подхода?

Пожалуйста, советуйте.

1 Ответ

0 голосов
/ 15 мая 2019

Я думаю, что нашел решение, но не уверен, что это лучшая практика или нет.

Я использую jQuery beforeunload, как указано ниже, для вызова внутреннего кода, когда я покидаю целевую страницу.

$(window).bind('beforeunload', function(){
  myfun();
});

А затем используйте ajax call:

function myfun(){
     // Write your business logic here
     var updateViewGuideUrl = '<s:url beanclass="com.cs.c.ui.customer.action.LandingAction" event="loginCheck2"/>';

            $.ajax({
                url : updateViewGuideUrl,
                success: function(data, textStatus) {
                    window.location.href = "http://stackoverflow.com";
            } 
            });
}
...