Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2008, 12:49
Новичок на форуме
Отправить личное сообщение для bar-boss Посмотреть профиль Найти все сообщения от bar-boss
 
Регистрация: 02.04.2008
Сообщений: 4

Как узнать свернуто окно браузера или нет.
Здравствуйте.

Есть окно сообщений чата. Аяксом раз в 10 секунд посылается запрос на сервер, на котором мы узнаем, есть ли новые сообщения.
Если новые сообщения есть, тогда мы вставляем полученный от аякса ответ в div (innerHTML).
Если новых сообщений нету, то есть аякс возвращает определенное слово (например 'stop'), тогда мы ничего не делаем.

Теперь, нужно определить свернуто окно сообщений чата или нет.
1. Если окно сообщений свернуто (onblur)
- если есть новые сообщения (аякс возвращает не 'stop'), тогда мы динамически меняем document.title ('Новое сообщение!!!' на '********' и наоборот), то есть чтобы оно мигало
- если нет новых сообщений (аякс возвращает 'stop'), тогда мы ничего не делаем.
2. Если окно сообщений не свернуто (onfocus)
- тогда независимо есть ли новые сообщения или нет, тогда мы присваиваем document.title определенное значение (напр, название сайта).

Проблема вот в чем,
при первом открытии чата аякс нам возращает сообщения (то есть не стоп), мы сразу же окно сворачиваем и начинает мигать title,
потом окно разворачиваем, и title присваивается название сайта.
потом ждем очередного ответа от аякса (он нам возвращает 'stop') и затем окно сворачиваем, и в этот момент title опять начинает мигать, а нужно чтобы он не мигал.

вот примерный код

аяксовая функция
function Request_to_Server()
{
if(req.responseText != 'stop')
{
делаем innetHTML = req.responseText
и если окно скрыто то вызываем функцию, которая меняет document.title (может здесь какая-то проблема?)
window.onblur = function()
{
setFlashingTitle();
}
}
else
{
если стоп то ничего не делаем
}
setTimeout('Request_to_Server();',10000);
}

и когда окно разворачивается, отменяем мигание
window.onfocus = function()
{
setNormalTitle();
}
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2008, 17:13
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

blur - это не факт что оно свёрнуто. Просто фокус ушёл.

Да и окно - это системная лабуда. Так что никак.
Ответить с цитированием
  #3 (permalink)  
Старый 25.09.2008, 09:30
Новичок на форуме
Отправить личное сообщение для bar-boss Посмотреть профиль Найти все сообщения от bar-boss
 
Регистрация: 02.04.2008
Сообщений: 4

var is_focus = 1;
window.onfocus = function()
{
is_focus = 1;
}

window.onblur = function()
{
is_focus = 0;
}

а если так?
Ответить с цитированием
  #4 (permalink)  
Старый 25.09.2008, 16:09
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

bar-boss,
Вы определяете в фокусе ли окно, а не свернуто ли. Потеря фокуса может случится при открытии другого окна, например. Далеко не только при сворачивании.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать о том, что флэш уже загрузился. Snipe Общие вопросы Javascript 4 29.01.2009 11:21
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55
Как узнать какие ошибки произошли при парсинге xml файла faunder Events/DOM/Window 0 12.09.2008 14:17
Как узнать, что IFRAME загрузился? DeUre Общие вопросы Javascript 4 01.08.2008 14:09
Как узнать что находится в <label></label> duke_nu Events/DOM/Window 4 22.04.2008 21:53