Я бы рекомендовал не использовать «настоящие» (всплывающие) окна, а использовать CSS-слои.
Так что, если приходит новое сообщение чата от кого-то другого, например, Создается контейнер div с идентификатором "chatSessionXXX", в котором происходит диалог. Затем вы всегда можете использовать этот идентификатор в качестве текущего идентификатора сеанса чата при сохранении или отображении сообщений через AJAX.
Когда приходит новое сообщение, вы также можете переместить слой вверху, настроив z-index, или просто добавить класс CSS, который добавляет некоторый «броский» эффект в этот контейнер.
Но если вы хотите использовать настоящие всплывающие окна, вы можете использовать focus (), чтобы вывести окно на передний план.
/* Inside your chat popup */
if(newMessage)
window.focus();
Вы также можете столкнуться с проблемой, когда хотите прекратить сеанс чата, когда всплывающее окно закрыто пользователем - событие unload и beforeunload не является надежным и может работать некорректно в некоторых браузерах (по крайней мере, насколько мне известно) идет на этом).