Mithlesh Shaw Ответов: 1

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


У меня есть приложение mvc, и я хочу, чтобы при перезагрузке пользователя/f5/tab close/browser close затем с помощью jquery я мог перенаправить его на действие mvc.

Что я уже пробовал:

Я пытался...
$(window). bind ('beforeunload', function (e) {
окно.местоположение.href = " / Account/SessionEnd";
возвращение "теперь прощайте!";
});

ОПЕРАЦИОННАЯ

$(window). unload(функция () {
окно.местоположение.href = " / Account/SessionEnd";
возвращение "теперь прощайте!";
});

ОПЕРАЦИОННАЯ

$(window). bind (функция () {
окно.местоположение.href = " / Account/SessionEnd";
возвращение "теперь прощайте!";
});

F-ES Sitecore

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

С тех пор как люди начали писать веб-сайты, они хотели знать, как пользователь больше не существует, но ответ таков: вы не можете знать. Используйте событие окончания сеанса, предоставляемое .net, но не делайте в нем ничего критически важного для бизнеса, так как оно ненадежно. Если вам нужно очистить старые данные и т. д., У вас есть запланированные задачи для этого.

1 Ответов

Рейтинг:
1

Richard Deeming

Ты не можешь.

Когда страница выгружается, пользователь либо переходит на другую страницу, либо закрывает вкладку. Если бы скрипт мог предотвратить закрытие вкладки и перенаправить ее на другую страницу, то каждый спам / фишинг / вредоносное ПО / порносайт делал бы это. Представьте себе доходы, если пользователь буквально не мог покинуть ваш сайт!

Судя по фрагментам кода, Вы просто хотите очистить сеанс, когда пользователь покидает ваш сайт. Однако если вы запускаете его каждый раз, когда страница выгружается, вы в конечном итоге уничтожаете сеанс, когда пользователь переходит на другую страницу вашего сайта. Если это то, что вы хотите сделать, то вы можете также не использовать сеанс в первую очередь - нет необходимости хранить данные между представлениями страниц, если вы собираетесь отбросить эти данные перед загрузкой следующей страницы.

Если вы можете каким-то образом определить, когда пользователь действительно покидает ваш сайт, а не просто переходит на другую страницу вашего сайта, то вам нужно сделать фоновый запрос, чтобы уничтожить сеанс. Если вы используете современный браузер[^], вы можете использовать API маяка[^] чтобы сделать запрос. Для всех старых браузеров вам нужно будет вернуться к синхронному AJAX-запросу.

В общем, было бы лучше просто отпустить тайм-аут сессии сам по себе.