Ok, vì vậy tôi đang cố hoàn thành dự án của mình bằng cách đặt thông báo "Đang tải ..." bằng chỉ báo phần trăm. Vừa đủ dễ. Vấn đề là tôi có ít hơn 6.000 của Raphael/SVG
dòng mã mà tiêm một cái gì đó dòng 2.000 + nút mới để DOM
. Vì vậy, vấn đề thực sự xảy ra khi tôi đang cố gắng thay đổi chỉ báo% của tôi khi tải tin nhắn, nhưng trình duyệt chỉ bị đóng băng cho đến khi Raphael
sẽ kết thúc việc tạo tất cả các nút đó.Thao tác DOM trong khi hiển thị SVG lớn
Những gì tôi đã cố gắng và những gì tôi biết:
1) Tôi có chức năng rất đơn giản để tính toán% của tải bằng cách tăng count
var và lan rộng chức năng này trên tất cả các mã 6000 của tôi. Bằng cách đó tôi mô phỏng quá trình tải thực tế. Không có gì mới.
2) Tôi biết rằng chức năng này hoạt động như ma thuật và thông qua quá trình tải Tôi thực sự nhận được từ 0 đến 100% -hero.
3) Bên trong hàm này, mỗi khi tôi nhận được giá trị mới - tôi đang cố gắng cập nhật% trên màn hình - nhưng không có gì xảy ra ở đó cho đến khi tải trang đầy đủ khi tôi nhận được 100% ngay lập tức.
4) Cách duy nhất tôi có thể nhận chỉ báo của mình để cập nhật là bằng cách đặt alert()
mỗi lần tôi đang cố gắng cập nhật. Đó là bụi ma thuật làm thay đổi chỉ báo của tôi khi cảnh báo bật lên xuất hiện trên màn hình.
5) Tôi đã thử setTimeout
và nhiều người khác, như chuyển đổi qua lại visibility
, thay đổi position
, tạo nút con, chạy vòng giả vv ... không có gì giúp ... trong SVG
vẽ - tất cả mọi thứ chỉ là Subzero đông lạnh.
6) Điều duy nhất không bị kẹt trên màn hình là hoạt ảnh CSS nhỏ của tôi (vòng tròn quay với vùng tối) (tốt, ngoại trừ FF - thậm chí không hoạt hình CSS ở đó).
7) Tôi hiểu từ các nguồn khác mà tôi không thể mô phỏng hành vi alert()
của riêng tôi, vì vậy không có may mắn ở đây.
8) Tôi đã thử defer
và async
, nhưng tôi không có tải vấn đề, tôi có vẽ/DOM-tiêm vấn đề ...
Tôi đoán đây là những gì tôi muốn để có được trong điều kiện hoàn hảo :
1) Tôi muốn biết - cách xác định mỗi lần tiêm/thao tác với nút svg?
2) Sau đó, làm cách nào để dừng toàn bộ quá trình hiển thị/tiêm và tự làm một việc gì đó cho đến callback
?
3) Sau đó, làm thế nào để tiếp tục?)))
4) Hoặc có thể có cái gì đó mà tôi đã bỏ lỡ ...
không tiêm 2000 nút cùng một lúc. tiêm 100, cập nhật đồng hồ, sau đó bơm thêm 100. lặp lại cho đến khi hoàn thành. – dandavis
Tôi đã thử rằng ... vấn đề là - trình phân tích cú pháp không dừng để cập nhật đồng hồ, nó chỉ đơn giản là bắt đầu đọc tất cả các dòng sau đây ... –
Vui lòng dán một số công việc hoặc fiddle để người ta có thể trợ giúp với thực tế làm việc – MarmiK