Tôi có bảng dữ liệu được tạo động với Javascript. Cứ sau vài phút, trang sẽ làm mới dữ liệu bằng cách kích hoạt một yêu cầu Ajax, lấy lại dữ liệu từ máy chủ và thay thế dữ liệu trong bảng. Đây là tiêu chuẩn đẹp, và bảng kết thúc lên tim như thế này:.IE hiển thị không đúng nội dung động cho đến khi thay đổi biểu định kiểu được thực hiện
này chỉ hoạt động tốt nếu tôi tạo ra các dữ liệu bằng cách làm sạch bàn và từng bước bổ sung các hàng trở lại trong Tuy nhiên, bảng này có thể có khả năng có hàng nghìn hàng và có thể mất nhiều thời gian để tạo bảng mà trình duyệt cung cấp cho người dùng lỗi "Tập lệnh này mất quá nhiều thời gian để thực thi". Vì vậy, tôi đã khắc phục điều này bằng cách phá vỡ việc tạo bảng thành các khối và làm một chút tại một thời điểm bằng cách sử dụng setInterval
.
Điều này làm việc tốt, nhưng vì bảng có thể mất một thời gian để được tạo ra hoàn toàn, tôi đã cố gắng thông minh và thực hiện một số bộ đệm đôi giả. Tôi có một bảng thứ hai có display
thiết lập để none
để ẩn nó, và khi tôi tái tạo bảng tôi thêm các hàng vào bảng ẩn một chút tại một thời điểm. Bằng cách này, dữ liệu hiện có được hiển thị cho người dùng cho đến khi việc tạo lại bảng hoàn tất, tại thời điểm đó chúng tôi chỉ thay thế nó bằng nội dung mới của chúng tôi cùng một lúc.
tôi đang làm thay thế của tôi với các dòng mã sau đây
$("#loading_area tbody").children().appendTo($("#unplanned tbody").empty());
này chỉ hoạt động tốt trên Firefox, Safari và Google Chrome. Nhưng trên IE, tôi nhận được như sau:
Những hàng đang thực sự không trống - nội dung là có nếu tôi cuộn theo chiều ngang đủ:
Dường như cột đầu tiên rộng hơn 55.000 pixel! Và đây là phần thực sự kỳ lạ: nội dung hiển thị lại đúng ngay khi tôi thay đổi BẤT KTH về kiểu dáng của bảng. Vì vậy, nếu tôi thay đổi màu phông chữ thành màu xanh lá cây, IE sẽ ngay lập tức hiển thị lại bảng, chính xác.
Nhưng tôi không thể thực hiện thay đổi trực tiếp. Vì vậy, nếu tôi nói
$("#unplanned").css("color", "green");
thì nó sẽ không hiển thị lại chính xác; màu sắc thay đổi, nhưng cột đầu tiên vẫn rộng 55.000 pixel. Nhưng nếu tôi thực hiện thay đổi trực tiếp cho biểu định kiểu
thì nó sẽ hiển thị lại bảng, chính xác.
Vì vậy, tôi đã kết thúc việc sửa lỗi này bằng cách thực hiện thay đổi kiểu ngẫu nhiên, chuyển đổi giữa nút Mở rộng/Thu gọn giữa 1px
và 0px
, mỗi khi tôi hoàn thành việc đặt bảng và thao tác này.
Vấn đề của tôi là khi tôi cố gắng in trang, các hàng trống, vì nội dung trang được hiển thị không chính xác cho máy in.
Vì vậy, tôi sẽ cố gắng nhiều hơn nữa, có thể chỉ cần chuyển đổi bảng nào được hiển thị và hoán đổi id
s của chúng hoặc bất kỳ thứ gì làm việc này. Câu hỏi của tôi là, những gì đang xảy ra ở đây?Điều này có vẻ giống như một lỗi trong IE; Tôi đang sử dụng IE8 nhưng điều này tương tự xảy ra trên IE6 và IE7. Tôi muốn tránh rơi vào hố này trong tương lai, nhưng tôi không chắc chắn điều gì gây ra điều này, vì vậy tôi không thực sự chắc chắn những gì tôi nên tránh. Bất kỳ ánh sáng mà bất cứ ai có thể đổ về điều này sẽ được nhiều đánh giá cao.
EDIT: Hoán đổi bảng nào được hiển thị khiến cho sự cố hiển thị biến mất trong trình duyệt mà không cần bản hack biểu định kiểu, nhưng sự cố khi in vẫn ở đó. Trong thực tế, vấn đề in ấn là có ngay cả khi bảng được tạo ra trực tiếp mà không có hiện/ẩn hoặc yếu tố di chuyển thủ đoạn nào cả. Vì vậy, tôi chắc chắn bối rối và không chắc chắn những gì tôi có thể làm để làm cho vấn đề này biến mất. Tôi có thể phải tạo một trang tĩnh, riêng biệt chỉ để in nếu tôi không thể hiểu được điều này.
Tôi chắc chắn bạn sẽ nhận được câu trả lời cho câu hỏi này - Tôi đã gặp phải một điều gì đó nổi bật tương tự về cách đây một năm. Không bao giờ phát hiện ra những gì đang diễn ra. Đã phải tái công cụ những gì tôi đã làm hoàn toàn gây ra stinkin 'IE – Matt