2009-12-27 2 views
0

Я делаю чат-приложение с PHP и AJAX, и я хочу показать сообщение, если пользователь находился на странице не менее 1-2 минут и не набрал ничего в окне чата за последние 1-2 минуты.Проверка того, что пользователь не напечатал ящик в течение определенного периода времени

Я хочу, чтобы показать сообщение в окне чата, как в Yahoo: [last message received 2-3 minutes ago]

+0

Что вы пробовали? Каким подходом вы хотите заняться этой проблемой? –

+0

Что вы пробовали? Поместите некоторый код, чтобы показать, как вы думаете, что проблема может быть решена и какие проблемы вы столкнулись. Не ожидайте, что люди сделают вашу работу. – Tomalak

ответ

3

Используйте setInterval периодически запускать функцию, которая проверяет значение входных данных, и сравнить его с предыдущим временем вы проверили (который вы необходимо будет хранить).

Если он не изменился, вы можете использовать XHR, чтобы сообщить серверу.

+1

setTimeout, вероятно, будет лучше - похоже, он только хочет, чтобы что-то произошло, когда текстовое поле было пустым более 2 минут после получения сообщения. Просто установите тайм-аут, когда получено сообщение, и когда он перезвонит, посмотрите, пусто ли текстовое поле –

3

Возможно, вы использовали бы setTimeout.

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

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

Если вы хотите, чтобы сообщение менялось каждый раз так часто, используйте setInterval, который сначала отобразит это сообщение, а затем обновит время, прошедшее с момента получения сообщения. Вы даже можете их комбинировать - установите тайм-аут на 3 минуты, а затем из обратного вызова из setTimeout запустите интервал на каждые 1 минуту. Возможно, вам захочется очистить интервал и удалить сообщение, когда будет получено новое сообщение, так что у вас нет этих пронумерованных бессмысленных сообщений, полученных 5 минут назад в чате.

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