Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Установка фокуса на элемент с сохранением скрола (https://javascript.ru/forum/jquery/29360-ustanovka-fokusa-na-ehlement-s-sokhraneniem-skrola.html)

antonM 25.06.2012 13:11

Установка фокуса на элемент с сохранением скрола
 
Добрый день.
Вопрос по сабжу, в основном проблема касается IE.

Есть div с tabindex="0". Возле div-а расположены его копки управления. После нажатия на кнопку управления необходимо передать фокус назад на div. При передаче фокуса все браузеры (что вполне логично) смещают скрол к этому элементу. Мне необходимо, чтобы скрол не смещался.

Для решения вопроса использую следующий код:
var dtop = $(document).scrollTop(); //Считываю начальную позицию
$("#div1").focus(); //Передаю фокус элементу
$(document).scrollTop(dtop); //Восстанавливаю начальное положение скрола

Во всех браузерах все хорошо кроме IE. Собственно в IE проблема возникает, если высота div больше высоты видимой области документа или он не полностью находится в этой области. Возникает неприятное мерцание документа, при каждом выполнении третьей строчки документ передергивает.
Пробовал "грязный" хак с setTimeout, не помогает. Возможно кто-то знает как победить IE?
Заранее благодарен.

Deff 25.06.2012 13:24

Цитата:

Сообщение от antonM
Есть div с tabindex="0". Возле div-а расположены его копки управления. После нажатия на кнопку управления необходимо передать фокус назад на div. При передаче фокуса все браузеры (что вполне логично) смещают скрол к этому элементу. Мне необходимо, чтобы скрол не смещался.

Запоминайте скролл при наведении на кнопу, после (клика)&&(и получении фокуса) - возвращайте позицию

antonM 25.06.2012 13:43

Deff, все равно дергает. :(

А может быть можно сделать как то (только для IE), что-то типа: event.preventDefault. Но только для скрола?

Deff 25.06.2012 15:25

Цитата:

Сообщение от antonM
А может быть можно сделать как то (только для IE),

Нун искать отмену скроллирования при смене фокуса


Часовой пояс GMT +3, время: 04:39.