2010-05-26 3 views
3

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

я использовал: -

window.onbeforeunload = confirmExit; 

function confirmExit() { 
    if(needToConfirm) { 
     return "Leaving this page will end your conversation."; 
    } 

Его работы хорошо, когда я пытаюсь закрыть браузер или вкладки он показывает всплывающее окно с сообщением «Нажмите OK для продолжения или Отмена, чтобы остаться на текущей странице. " Я хочу выполнить задачу, когда пользователь нажимает кнопку «ОК», и если он нажимает «отменить», то останется на текущей странице.

Пожалуйста, помогите мне :(

Заранее спасибо

Ansh J

+0

retagging, так как здесь нет AJAX. – Agos

ответ

4

Это не представляется возможным.

Вы можете обрабатывать unload событие и отправить запрос AJAX, но что может быть не совсем надежным.

Лучшее решение для отправки звукового сигнала AJAX каждые x минут и подумайте о отключении пользователя, если вы прекратите получать сердечный ритм.

+0

Не могли бы вы дать мне пример кода, который поможет мне? –

+3

Это также относится к случаю, когда браузер пользователя выходит из строя, или по какой-либо причине они теряют связь (сеть идет вниз, плохое покрытие и т. Д.). – jimbojw

+1

Вызовите 'setTimeout' для выполнения запроса AJAX каждую минуту. – SLaks

1

Почему бы не периодически «пинговать» сервер, чтобы он знал, что они все еще существуют, и если пользователь пропустит 3 пинга, то он будет отмечен как выведенный из системы?

2

Идите наоборот: когда вы получаете событие Unload, отправьте сервер сообщение об информировании пользователя о разъединении. Сервер ждет некоторое время, а затем автоматически отключается.

Затем, если пользователь отменит и останется на странице, вы отправите на сервер сообщение, чтобы сообщить, что клиент все еще жив.

Недостатком является то, что если пользователь слишком долго ждет отмены нажатия, он может быть отключен.

+1

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

Смежные вопросы