PDA

Просмотр полной версии : Обработчик выхода из окна браузера


nark03
10.12.2009, 13:21
Есть небольшое приложение на флеше, которое я интегрирую в страницу html, задача состоит в том чтоб когда юзер закроет страницу должна удалится информация из базы даных. На кнопку я такой обработчик повесил, а как это зделать для страницы браузера не вкурсе, помогите пожалуста.

MerlinTwi
10.12.2009, 15:24
Попробуйте так.
В HTML страницу ставим:

<script type="text/javascript">
window.onbeforeunload = function() {
// эта функция вызывается при закрытии HTML страницы
var app = document.getElementById('id_флешки_а_html');
if (app) app.doClose(); // дергаем флеш
}
</script>


на флешке:


if (ExternalInterface.available) {
try {
// объявляем функцию доступную из javascript
ExternalInterface.addCallback("doClose", doClose);
} catch (error:Error) {}
}
//...
/** HTML страница закрывается */
private function doClose():void {
// делаем что надо
}

nark03
10.12.2009, 16:19
Огромное спасибо, а то уже начал искать на иностранных сайтах решение

CrazyFlasher
10.12.2009, 16:25
а если выключить комп не закрывая браузера?

так нельзя делать...

nark03
10.12.2009, 17:20
На кнопку то я повесил это дело но если вешать на обработчик закрытия окна страницы, то ничего не получается, страница закрывается а функция не выполняется

xpymbl4
10.12.2009, 19:10
Сделайте таймер на сервере:
1. Если от клиента приходит запрос - обнуляйте таймер.
2. Если таймер достиг конечного значения - удаляйте информацию их бд.

Если используете прелоадер флешки, расположенной на сервере, и работаете с сокетами, то можно работать с sid.

Добавлено через 1 минуту
0. Старт таймера - по первому запросу от пользователя.

nark03
10.12.2009, 23:09
Не понял как реализоватьСделайте таймер на сервере:
1. Если от клиента приходит запрос - обнуляйте таймер.
2. Если таймер достиг конечного значения - удаляйте информацию их бд.


Добавлено через 12 часов 57 минут
Просто я пишу чат на Flash. Задача моя состоит в том чтобы выводились все пользователи онлайн, по таймеру через каждые 10 секунд отсылает Flash запросы PHP, тот проверяет базу, и выводит всех кто сейчас онлайн. Но если человек вышел, то информация собственно не удаляется, можна конешно повесить на флеш кнопку выход, но не факт что все будут ей пользоватся, по этому нужно какоето решение. Если вопрос не сюда извените)).

Crenth
15.01.2010, 09:18
откройте в клиентском флеше сокетное соединение с сервером.
даже если юзер вырубит комп тупо, сервер уже будет в курсе - внесете изменения в БД. работающего быстрее способа нет :)

SaFeR
15.01.2010, 14:11
Можно сделать еще в таблице пользователей онлайн поле с временем последннго запроса.
Таймер каждые 10 секунд отправляет запрос "я онлайн, дай мне спиок ползователей", а php удаляет тех кто не обновлялся более 11 секунд и возвращает остальных.