Tôi có một báo cáo dài hạn và muốn hiển thị trình quay số chờ cho người dùng trong khi tạo báo cáo. Tôi đã thực hiện công việc này nhưng tôi không chắc chắn tôi đang làm điều đó một cách tốt nhất hay đúng đắn.Khi nào các trình duyệt bắt đầu hiển thị HTML được truyền một phần?
Điều này đang sử dụng ColdFusion nhưng có thể là bất kỳ ngôn ngữ nào tôi đoán. Ở trên cùng của trang, tôi có một số Javascript (jQuery) cho thấy một chờ đợi-spinner cộng với có một handReady xử lý, nơi tôi có spinner xuống. Tôi xóa đầu ra (nếu nó quan trọng) và sau đó phần còn lại của mã hoạt động trên nội dung báo cáo. Điều này đã không bao giờ render spinner và tôi giả định rằng, mặc dù tôi đã xả những thứ trên máy chủ, một số đệm đã xảy ra trên đường đi và trình duyệt không bao giờ thấy mã spinner cho đến khi quá muộn. Vì vậy, tôi đã thêm một vòng lặp ngay trước khi tôi xóa sạch nhổ ra một vài trăm dòng nhận xét HTML. Sau khi tinh chỉnh số lượng các dòng, đã làm các trick. Tôi cho rằng đó là cách các trang web khác cũng vậy.
Nhưng: Hôm nay, trong khi xem một trang khác của tôi phát ra một dòng theo trạng thái đường của một công việc dài, tôi thấy rằng trang đó tuôn ra sau mỗi dòng và trình duyệt hiển thị từng bước như mong muốn. Điều này không phù hợp với kết luận của tôi từ trên cao và bây giờ tôi không biết các quy tắc là gì. Có cách nào dự đoán được để thực hiện việc này không? Nó có thay đổi theo trình duyệt không?
KIỂM TRA: Tôi đánh giá cao các câu trả lời cố gắng giải thích đúng cách để thực hiện công cụ chờ đợi nhưng tôi chỉ sử dụng máy quay chờ làm ví dụ để minh họa câu hỏi thực của mình: có cách đáng tin cậy để dự đoán khi trình duyệt sẽ bắt đầu hiển thị HTML khi nó được truyền trực tiếp tới chúng qua mạng? Rõ ràng là thông qua quan sát rằng các trình duyệt không chờ thẻ/html bắt đầu hoạt động. Câu hỏi này không nhất thiết phải liên quan đến Javascript. Ví dụ, trang thứ hai tôi mô tả rằng trạng thái hiển thị là HTML thuần túy.
Nếu tôi hiểu chính xác bạn đang tải một trình quay vào DOM bằng jQuery trước khi sự kiện sẵn sàng tài liệu đã được kích hoạt? Tôi không biết nếu đó là liên quan đến vấn đề của bạn, nhưng đó không phải là những gì bạn muốn làm. Và đây có phải là cuộc gọi ajax mà bạn đang thực hiện không? Có vẻ như bạn đang thử thực hiện chức năng AJAX (tải DOM bằng chỉ báo chờ, thực hiện cuộc gọi AJAX để tải báo cáo, thay thế chỉ báo chờ báo cáo khi được tải), nhưng không sử dụng AJAX. –
Không có cuộc gọi AJAX nào. Có jQuery nội tuyến đơn giản để hiển thị spinner. Phần còn lại của trang là dữ liệu báo cáo thực tế. Điều này làm việc tốt. Tại sao đây không phải là điều tôi muốn làm? Nếu tôi có thể làm cho nó hoạt động, nó có vẻ đơn giản hơn nhiều sau đó chia trang thành hai phần - bit ban đầu cộng với báo cáo được trả về thông qua AJAX. – DaveBurns