Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Скрипт для автоматической фокусировки документа
 Сайт -> Форумы » Фильтры
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
WRFan
Silver Member
Silver Member


Зарегистрирован: 26.07.2006
Сообщения: 141

СообщениеДобавлено: Вт, Янв 09 2007 23:47 Цитировать |  |  | 

Иногда открываешь страницу, крутишь колесо мышки, чтобы почитать текст, находящейся за пределами скрина, но ничего не происходит. Это потому, что активным элементом является не документ, т.е. на данный момент открытая страница, а например адресная строка браузера. или документ в фокусе, но в самом документе активным элементом является элемент, который сам по себе не скроллится, а скролл BODY документа предотвращает. такая ситуация может например быть с flash роликами, вставленными в страницу. чтобы скроллить страницу колесом мышки, нужно сначала тыкнуть крысой в BODY, т.е. сделать его актинвным.

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

написал вот скриптик (вставлять в конец страницы перед </body> тэгом), который "включается", когда курсор мышки входит в пределы документа. при этом проверяется, какой элемент на данный момент имеет фокус (=является активным). если это объект (flash например), то у него отнимается фокус и передаётся document.body. если это какой то другой элемент (например input/textarea и т.д.), то фокусируется просто сам документ, т.е. отнимается фокус например у адресной строки браузера и передаётся документу, чтобы можно было сразу начинать скроллить страницу, никуда предварительно не тыкая. у самого элемента в документе фокус НЕ отнимается (если это не object, объектам всё равно фокус ни к чему)

Код:

<SCRIPT LANGUAGE="JScript">
if (document.compatMode && document.compatMode != "BackCompat")
IHateDocType = document.documentElement
else if (document.body)
IHateDocType = document.body

function focusnik()
{
var oActive =document.activeElement
if (oActive.tagName == "OBJECT")
{
IHateDocType.focus()
}
else
{
document.focus()
}
}
hObj=document.getElementsByTagName('html')[0]
hObj.attachEvent("onmouseenter",focusnik)
</script>


первая часть кода написана для страниц, использующих DOCTYPE (например http://www.betanews.com/ ), одно мучение с этим, т.к. DOCTYPE страницы не понимают, что такое document.body
К началу Профиль Сообщение Отправить e-mail
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3