Tôi đang cố gắng hiểu chính xác khi nào HTML được hiển thị trên màn hình trong trình duyệt.Trình duyệt hành vi hiển thị khác nhau với vị trí khác nhau của tập lệnh và thẻ liên kết
tôi đọc this S.O. câu trả lời và thử một số trường hợp sử dụng và tôi quan sát thấy một cái gì đó không phù hợp với mô hình chia sẻ trong liên kết,
còn tôi có thể không có vẻ để tìm một tâm-mô hình phù hợp cho việc quan sát.
Trình tự hiển thị trình duyệt phù hợp với các trường hợp được thảo luận là gì?
- Khi HTML parser đạt M1, M1 sẽ được hiển thị.
- Sau đó trình phân tích cú pháp tiếp cận thẻ tập lệnh, nó chờ tệp js tải xuống và phân tích cú pháp.
- Sau đó trình phân tích cú pháp đạt M3, M3 được hiển thị.
Trường hợp A khớp với thứ tự được mô tả trên hầu hết các câu trả lời. Huray !!! Tiếp tục nào.
- HTML parser đạt M1, M1 không được hiển thị như trong trường hợp một
- HTML parser đạt liên kết thẻ, nó chờ đợi cho css để tải xuống và phân tích cú pháp.
- M1 và M2 được hiển thị, do đó, nó chờ biểu định kiểu để tải xuống trước khi hiển thị M1.
- Sau đó trình phân tích cú pháp tiếp cận thẻ tập lệnh, nó chờ tệp js tải xuống và phân tích cú pháp.
- Sau đó trình phân tích cú pháp đạt M3, M3 được hiển thị.
Vì vậy Case-B cho thấy rằng nó không hiển thị M1, nó đợi CSS tải xuống trước khi hiển thị. Vì vậy, có thể trình kết xuất cần biết CSS trước khi hiển thị.
Trường hợp: CHình ảnh C
Vì vậy, từ trường hợp B, chúng tôi cho rằng có thể render-er cần biết CSS.
Hãy xem xét trường hợp C:
- Trình phân tích cú pháp HTML đạt M1, M1 được hiển thị. Nó không nên được hiển thị vì như chúng ta đã thấy trong trường hợp B nó phải đợi cho css tải.
- Hiện tại, trình phân tích cú pháp đạt đến tập lệnh, nó đợi js tải xuống và phân tích cú pháp.
- M2, M3 được hiển thị
Edit: đề xuất tâm-mô hình này giải thích các hành vi trên .. (nhưng đòi hỏi phải xem xét/tinh)
Script
không phải là một thẻ chặn trình kết xuất đồ họalink
là thẻ chặn trình kết xuất- Xem xét rằng trình kết xuất và Trình phân tích cú pháp HTML là hai chuỗi.
- Trình phân tích cú pháp HTML có thể gửi nội dung tới trình kết xuất để hiển thị.
- Trình phân tích cú pháp HTML có thể gửi tín hiệu chặn đến trình kết xuất ... để chặn trình kết xuất hiển thị mọi html không được hiển thị ít nhất một lần.
- Trình phân tích cú pháp HTML có thể gửi tín hiệu bỏ chặn đến trình kết xuất ... để bỏ chặn trình kết xuất khỏi hiển thị bất kỳ html nào chưa được hiển thị một lần.
Với mô hình trên chúng ta có thể giải thích TRƯỜNG HỢP B và CASE C:
TRƯỜNG HỢP B Giải thích:
- HTML parser đạt M1, M1 là gửi để renderer.
- Trình phân tích cú pháp HTML tiếp cận thẻ Liên kết, trình phân tích cú pháp gửi tín hiệu chặn đến trình kết xuất đồ họa.
- Trình kết xuất trước khi nó có thể hiển thị M1, nó có tín hiệu chặn và do đó M1 không hiển thị.
- Phân tích cú pháp thẻ liên kết hoàn chỉnh của trình phân tích cú pháp HTML (tải xuống) và gửi tín hiệu bỏ chặn tới trình kết xuất, khi nhận được tín hiệu bỏ chặn, nó hiển thị M1.
- Trình phân tích cú pháp HTML đạt M2, M2 được gửi tới trình kết xuất đồ họa.
- Trình phân tích cú pháp HTML tiếp cận thẻ Tập lệnh, vì thẻ tập lệnh không phải là thẻ chặn trình kết xuất đồ họa, trình kết xuất đồ họa được tự do hiển thị html.
- Trình phân tích cú pháp HTML hoàn thành việc phân tích cú pháp thẻ tập lệnh (tải xuống).
- Trình phân tích cú pháp HTML đạt M3, M3 được gửi tới trình kết xuất đồ họa.
Tương tự, chúng tôi có thể chạy khô CASE C và phù hợp với mô hình trên.
Mô hình của tôi có đúng hay sai?
Điều này có thể giúp bạn: - https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery – user1673567
liên kết là tốt .. nhưng nó không giải thích hành vi mâu thuẫn trong trường hợp B và C .. – Bhuvan