タスク リストとグラフィカル チャートを持つ dhtmlx ガント チャート UI コンポーネントを使用しています。タスク リストとグラフィカル チャートは、並列スクロール用に同期された 2 つの個別の div 要素に含まれています。チャートエリアをスクロールすることで、タスクリストが自動的にスクロールされ、タスク行の位置とガントラインの位置が一致します。
コンポーネントのソース コードを調べたところ、次のコードによって同期が実装されていることがわかりました。
this.oData.onscroll = function() {
self.panelTime.scrollLeft = this.scrollLeft;
self.panelNames.scrollTop = this.scrollTop;
};
UI コントロールのすべての HTML マークアップは、JavaScript によって動的に生成されます。800 のようなタスク リストをレンダリングするのに時間がかかりすぎることを除いて、すべてがうまく機能しています。
レンダリング時間を短縮するために、独自のサーバー サイド レンダリング モジュールを構築して、最初に生成されたクライアント サイドと同じ HTML マークアップを生成することにしました。このマークアップは、通常の jquery $.get() を使用してクライアント側からフェッチされ、$(el).html() を使用してページに挿入されます。次に、必要なイベント ハンドラーを元のクライアント側バージョンとして配置します。
現在の問題は、並列スクロールが機能しないことです。グラフ エリアのスクロール イベントはキャプチャできましたが、タスク リスト エリアの scrollTop プロパティを設定できませんでした。scrollTop プロパティを手動で強制するために firebug でテストしましたが、値は変わりませんでした。scrollTop プロパティは読み取り専用のようです。
これについて何か説明はありますか?