Scrollbar и ajax
Всем привет!
Делаю собственный scrollbar для дива. Все работает отлично. Но вот появилась проблема. Контент периодически добавляется => scrollHeight увеличивается. После того, как это происходит - я обновляю размер скроллера, но положение скроллера на треке остается неизменным и, как только начиаешь его двигать, то он как-бы спрыгивает с видимого контента в другое место. Не уверен, что объяснил доступно. На примере - если в textarea есть какой-то текст и мы перемещаем скролл в середину, а после этого добавим дофига текста (например через firebug:)))), то скроллер, по мере добавления текста, будет уменьшаться и перемещаться вверх. Вот интересует вычесление этого перемещения. После аякса я вызываю Scrollbar.update(); вот что она делает Scrollbar.prototype._setScrollerHeight = function() { var scroller_height = 20; if ( this.target.scrollHeight > this.target.clientHeight ) { scroller_height = ( this.height * ( this.height -34) ) / this.target.scrollHeight; scroller_height = Math.round(scroller_height); scroller_height = scroller_height < 15 ? 15 : scroller_height; this._can_draw = true; } this._scroller_height = scroller_height; }; Scrollbar.prototype.update = function() { if ( !this._scroller ) { this._run(); } var old_scroller_height = this._scroller_height; this._setScrollerHeight(); if ( old_scroller_height == this._scroller_height ) { return; } Dom.setStyle(this._scroller, 'height', this._scroller_height); this.recalculateStep(); this._old_target_height = this._getScrollPosition(); }; Тут происходит изменение размера самого скроллера...Думаю, что для вычисления новой позиции - что-то с пропорциями, но я туплю. Уже запарился с этим. Помогите, кто может) |
Часовой пояс GMT +3, время: 00:49. |