Как перехватить событие, когда окно попадает в фокус (JS)?
От: valxb  
Дата: 19.02.03 17:13
Оценка:
Привет всем!

Можно ли перехватить и обработать на JavaScript событие, когда пользователь приводит некоторое окно браузера в фокус, т.е. оно помещается поверх всех и становится активным?

Заранее оч. признателен!
Val
Re: Как перехватить событие, когда окно попадает в фокус (JS
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.02.03 19:19
Оценка:
Здравствуйте, valxb, Вы писали:

onfocus
... << RSDN@Home 1.0 beta 6 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Как перехватить событие, когда окно попадает в фокус
От: DSD Россия http://911.ru/cv
Дата: 19.02.03 22:33
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, valxb, Вы писали:


S>onfocus


Я тут недавно мучал window.onfocus и window.onblur...
Нифига не работает по-нормальному....

http://911.ru/to_rsdn/onfocus.html
попробуй покликать мышью по пустому месту в документе(body), по любой таблице, по input-box'у....
Почему так происходит? ведь onfocus для окна стоит.
А как сделать по-нормальному? чтоб только на onfocus окна браузера реагировало...
--
DSD
Re[3]: Как перехватить событие, когда окно попадает в фокус
От: uzzy Россия  
Дата: 20.02.03 05:33
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, Sinclair, Вы писали:


S>>Здравствуйте, valxb, Вы писали:


S>>onfocus


DSD>Я тут недавно мучал window.onfocus и window.onblur...

DSD>Нифига не работает по-нормальному....

DSD>http://911.ru/to_rsdn/onfocus.html

DSD>попробуй покликать мышью по пустому месту в документе(body), по любой таблице, по input-box'у....
DSD>Почему так происходит? ведь onfocus для окна стоит.

На самом деле хоть onfocus и стоит на window (равносильно повесить на <body>) onfocus срабатывает когда фокус получает первый child body (то есть при кликании по тейблу ловит фокус не прямой child of body)... надеюсь мысля выражена понятно.

DSD>А как сделать по-нормальному? чтоб только на onfocus окна браузера реагировало...


Не могу пока сказать , к сожалению.
Re[4]: Как перехватить событие, когда окно попадает в фокус
От: DSD Россия http://911.ru/cv
Дата: 20.02.03 06:21
Оценка:
Здравствуйте, uzzy, Вы писали:

U>На самом деле хоть onfocus и стоит на window (равносильно повесить на <body>) onfocus срабатывает когда фокус получает первый child body (то есть при кликании по тейблу ловит фокус не прямой child of body)... надеюсь мысля выражена понятно.


Почему тогда таблица или поле ввода — "чужие" элементы(при фокусе на них фокус окна теряется), а <span> — не чужой элемент(с ним все в порядке)?
Частично спасают onfocusin/onfocusout, но они присутствуют только с IE версии 5.5, да и то, тоже как-то кривовато работают...
--
DSD
Re[5]: Как перехватить событие, когда окно попадает в фокус
От: uzzy Россия  
Дата: 20.02.03 06:36
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, uzzy, Вы писали:


U>>На самом деле хоть onfocus и стоит на window (равносильно повесить на <body>) onfocus срабатывает когда фокус получает первый child body (то есть при кликании по тейблу ловит фокус не прямой child of body)... надеюсь мысля выражена понятно.


DSD>Почему тогда таблица или поле ввода — "чужие" элементы(при фокусе на них фокус окна теряется), а <span> — не чужой элемент(с ним все в порядке)?


у таблица сама по себе не ловит фокус, а ловит td , у которого родитель — tr, у которого родитель — table. и поэтому ловит <td>, а не <table>, вот именно поэтому когда фокус возвращается <span>-у тогда и все срабатывает. Это не есть хорошо ... но с этим приходиться мириться... пока не будет найден обход этой дури IE.

c <input> примерно такая фигня... так уж устроен IE . Мне это тоже не нравиться, но что подлаешь...
Re[5]: Как перехватить событие, когда окно попадает в фокус
От: uzzy Россия  
Дата: 20.02.03 09:15
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Почему тогда таблица или поле ввода — "чужие" элементы(при фокусе на них фокус окна теряется), а <span> — не чужой элемент(с ним все в порядке)?

DSD>Частично спасают onfocusin/onfocusout, но они присутствуют только с IE версии 5.5, да и то, тоже как-то кривовато работают...

Нашел описание проблемы ... книжка есть: "Javascript. Библия пользователя" (автор: Дэнни Гудман). тама говориться о всплывании событий. в общем много говорить об этом не буду.. в книжке все достаточно подробно описано.
Добавлю, что от всплываний объектов event-ов можно избавиться при помощи:
для IE:
event.cancelBubble = true;
для NN
stopPropagation () // метод
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.