Заголовок страницы Уведомление в нескольких браузерах - PullRequest
0 голосов
/ 08 мая 2011

У меня есть скрипт чата на веб-странице. Теперь, когда кто-то добавляет сообщение, я хочу уведомить других людей, у которых страница / вкладка открыта, но не активна, для получения уведомления о новом сообщении.
Например, я хотел бы изменить заголовок страницы с «Чат» на «Новое сообщение - Чат». Я думаю, что это то, что делает "Facebook Chat" тоже.

Но когда я использую: document.title = "Новое сообщение"; Он изменяется только в браузере пользователя, отправившего сообщение. Не в других браузерах.

Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 08 мая 2011

Чтобы делать то, что делает Facebook Chat, который уведомляет каждого пользователя об обновлениях в режиме, близком к реальному времени, вам нужно использовать технологию «push» или что-то, что имитирует ее.Возможные методы: опрос (просто регулярное подключение каждого клиента к серверу для проверки обновлений), Comet (длительный опрос или потоковые подключения к серверу) или более новые и более достоверные «push» (но менее поддерживаемые) методы, такие как отправленные сервером события.или WebSocket API .

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

0 голосов
/ 08 мая 2011

Слушайте document.title = "New Message"; - это абсолютно совершенный код, но вы поместили его в такую ​​область, что когда человек печатает сообщение, оно выполняется на его странице, что неправильно. Вы должны добавить этот фрагмент кода, когда пользователь ожидает ответа (другой пользователь, с которым вы общаетесь), когда AJAX (или любой другой метод, который вы используете для проверки) получает ответ от человека, который набрал сообщение.

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

А потом в теле вы можете сделать событие, когда onmousemove изменит название обратно на оригинальное! Так вот как работает чат Facebook.

Ваша ошибка - место, вы разместили свой фрагмент кода, ничего больше!

Надеюсь, это поможет, ура!

0 голосов
/ 08 мая 2011

Вы можете присвоить своему названию идентификатор:

document.getElementById("title").innerHTML ="new Title";

или просто

document.getElementsByTagName('title')[0].innerHTML = "New Title";

, в любом случае это будет работать

ОБНОВЛЕНИЕ:

после перечитывания я допустил ошибку, я вижу.

когда ваш скрипт проверяет новое сообщение, если есть новое сообщение, вы должны также изменить заголовок или выполнить дополнительный тест, чтобы увидеть,там пользователь активен или нет до изменения названия

...