Принудительное позиционирование прокрутки с помощью Javascript scrollLeft - PullRequest
1 голос
/ 06 апреля 2009

У меня есть набор функций Javascript, которые я использую с таблицей элементов ввода для включения навигации. Такие вещи, как отслеживание текущего в фокусе элемента и переполнение с конца одной строки на начало следующей. Я имею поддержку полосы прокрутки с фиксированным первым столбцом, создав одну таблицу шириной всего в один столбец с моим фиксированным столбцом и имея полосу прокрутки для другой таблицы.

Однако недавно я заметил, что поведение полосы прокрутки по умолчанию немного несовершенно. Когда я перехожу к последнему столбцу, Firefox оставляет этот столбец частично скрытым полосой прокрутки, а не прокручивается достаточно далеко, чтобы увидеть его. Аналогичным образом, после прокрутки, чтобы увидеть другую часть последнего столбца, когда я перехожу к следующей строке и код навигации устанавливает фокус на ячейку в первом столбце (замороженная таблица), Firefox не изменяется полоса прокрутки, чтобы я мог видеть весь первый столбец.

Из-за этого я изучал, как изменить положение полосы прокрутки, используя JavaScript. Моя таблица не использует вертикальную полосу прокрутки, только горизонтальную. Так что я наткнулся на scrollLeft.

document.getElementById("meastable").scrollLeft = 1; // reset scroll to leftmost

К сожалению, кажется, что это работает только время от времени. Когда я включил Firebug и проследил через мой код навигации, где находится эта строка, кажется, что она работает время от времени, но в большинстве случаев эта строка запускается, но свойство прокрутки таблиц влево остается неизменным, и я не вижу изменений визуально либо.

Я также установил scrollLeft на большое число, поэтому оно будет установлено на максимум, как описано в документации, и это также не работает (за исключением времени от времени).

Я использую следующий код для настройки полосы прокрутки в моей таблице.

<div style="overflow:auto">
<table id="meastable" border="1">

В соответствии с документацией Mozilla, похоже, что она возникла в IE, но теперь работает в Firefox. Разве это не работает в Firefox, поскольку внутренний проект, для которого он предназначен, будет только Firefox.

Так что я пытаюсь понять, что не так. Известно ли, что scrollLeft работает неправильно, или я должен вернуться и посмотреть, не испортил ли я что-то в своем определении полосы прокрутки или что-то в этом роде?

1 Ответ

7 голосов
/ 07 апреля 2009

Содержащий div - это элемент с переполнением. Вам нужно установить scrollLeft элемента div, а не таблицы.

...