Tôi đang sử dụng thành phần Giao diện người dùng biểu đồ Dhtmlx Gantt có danh sách nhiệm vụ và biểu đồ đồ họa. Danh sách nhiệm vụ và biểu đồ đồ họa được chứa trong hai phần tử div riêng biệt được đồng bộ hóa để cuộn song song. Bằng cách di chuyển khu vực biểu đồ, danh sách nhiệm vụ được tự động cuộn kết quả vị trí hàng nhiệm vụ phù hợp với vị trí dòng Gantt.Tại sao đôi khi scrollTop/scrollLeft không ghi được?
Kiểm tra mã nguồn thành phần, tôi thấy đồng bộ được thực hiện bởi các đoạn mã sau:
this.oData.onscroll = function() {
self.panelTime.scrollLeft = this.scrollLeft;
self.panelNames.scrollTop = this.scrollTop;
};
Tất cả đánh dấu HTML trong việc kiểm soát giao diện người dùng được tạo động bởi JavaScript. Tất cả đều hoạt động tốt, ngoại trừ việc mất quá nhiều thời gian để hiển thị danh sách tác vụ 800-ish.
Để cải thiện thời gian hiển thị, tôi quyết định xây dựng mô-đun hiển thị bên máy chủ của riêng mình để tạo đánh dấu HTML giống với phía máy khách được tạo ban đầu. Đánh dấu này được lấy từ phía máy khách bằng cách sử dụng jquery $ .get() thông thường và được tiêm vào trang bằng cách sử dụng $ (el) .html(). Sau đó, tôi đặt trình xử lý sự kiện cần thiết làm phiên bản phía máy khách gốc.
Vấn đề bây giờ là cuộn song song không hoạt động. Tôi có thể nắm bắt các sự kiện di chuyển trên khu vực biểu đồ, nhưng tôi không thể thiết lập thuộc tính scrollTop của khu vực danh sách nhiệm vụ. Tôi thử nghiệm trong firebug để buộc tài sản scrollTop theo cách thủ công, nhưng giá trị không thay đổi. Dường như thuộc tính scrollTop là chỉ đọc.
Có giải thích nào cho vấn đề này không?
Cảm ơn bạn đã giải thích. Tôi nghĩ rằng tôi đã bỏ lỡ yếu tố đặt để tài sản scrollTop đi sai div. –