Всем привет!
Делаю собственный 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();
};
Тут происходит изменение размера самого скроллера...Думаю, что для вычисления новой позиции - что-то с пропорциями, но я туплю. Уже запарился с этим. Помогите, кто может)