Вызовите две функции для перезагрузки и не перезагружайте при использовании события beforeunload [duplicate]

с моей стороны, я думаю, что вы можете, но вам придется делать файлы для подключения к базе данных, потому что mysqli_* будет принимать только mysqli_connect, и поэтому с помощью mysql_*

вы можете попробовать при обучении PDO Better

4
задан tjameson 20 July 2013 в 08:17
поделиться

2 ответа

С помощью нескольких хаков вы можете, по крайней мере, определить, остался ли пользователь. Если пользователь покинул страницу, вы не можете этого сделать:

var timeout;

$(window).on('beforeunload', function (){
    timeout = setTimeout(function() {
        // user stayed, do stuff here
    }, 1000);
    return "You save some unsaved data, Do you want to leave?";
});

FIDDLE

12
ответ дан adeneo 21 August 2018 в 10:19
поделиться
  • 1
    как это работает? Я не понимаю .. вы можете объяснить, пожалуйста – Leonardo Da Codinchi 3 September 2013 в 14:11
  • 2
    @VAGABOND - Когда событие разгрузки запускается (когда пользователь уходит), подтверждение появляется, чтобы спросить, не оставить или не уйти. Поскольку вы не можете добавить код после оператора return, поскольку это не будет выполнено, вы можете добавить его в таймаут, который выполняется, если пользователь решил остаться. Если пользователь покинул страницу, все равно все потеряно, поэтому тайм-аут никогда не будет выполнен. – adeneo 3 September 2013 в 16:02
  • 3
    так что в принципе, код в тайм-ауте выполняется после возврата? и в вашей скрипке я увидел функцию тайм-аута, которая очищает тайм-аут ... это то, что меня смутило ... потому что код работал без этого тоже .. – Leonardo Da Codinchi 3 September 2013 в 16:05
  • 4
    Да, неважно, это то, что я, по-видимому, забыл удалить. – adeneo 3 September 2013 в 16:10
  • 5
    @FaisalAlvi - вы, конечно, ошибаетесь. Встроенные оповещения всегда останавливают таймеры, а в современных браузерах даже оставляя вкладку, останавливают таймеры - & gt; jsfiddle.net/ek5xt59s – adeneo 2 December 2017 в 12:32

iirc, событие unload не запускается, когда пользователь решает остаться на странице. так:

$(window).on('unload', function (){
    // user has left the page, do stuff here
}
0
ответ дан bone-idle 21 August 2018 в 10:19
поделиться
  • 1
    Хотя это верно, у вас почти нет функциональности в событии разгрузки, потому что страница уже выгружается. Таким образом, вы не сможете получить много вещей внутри этого метода. – Brian 23 July 2013 в 17:12
  • 2
    Правильно, что вы не можете взаимодействовать с пользователем на этом этапе. Все взаимодействия с пользователем необходимо выполнить перед разгрузкой (то есть в событии beforeunload). Тем не менее DOM все еще остается нетронутым. Таким образом, по крайней мере, можно получить некоторые данные на ваш сервер через асинхронные вызовы. – bone-idle 25 July 2013 в 11:00
Другие вопросы по тегам:

Похожие вопросы: