2011-11-07 28 views
9

Tôi đã gặp phải một chút vấn đề với sự hiểu biết của tôi về thuộc tính complete.Thuộc tính `complete` của phần tử hình ảnh hoạt động như thế nào?

Tôi giả định complete sẽ là true nếu hình ảnh đã được tải xuống và giải mã chính xác.

MDN says ...

True nếu trình duyệt đã lấy hình ảnh, và nó là một trong supported image type đã được giải mã mà không có lỗi.

Vì vậy, tôi cho rằng việc kiểm tra tài sản complete của hình ảnh trước khi sự kiện load của nó đã bị sa thải sẽ trở false (hình ảnh đã không được lấy). Khi cô lập điều này trong jsFiddle, tôi tiếp tục nhận được true khi kiểm tra thuộc tính bên trong một yếu tố script ngay trước thẻ đóng </body>.

Tôi cũng experimented với thay đổi thuộc tính src của hình ảnh và sau đó kiểm tra ngay thuộc tính complete của nó. Tôi có thể thấy trong trình duyệt, số complete sẽ trở lại như true ngay cả trước khi hình ảnh đã được tải xuống (Tôi đang xem tiến trình của nó qua bảng điều khiển Net trong Firebug).

Hành vi tôi mong đợi có chính xác không? Có cách nào để có được điều này để làm việc như tôi mong đợi?

Hiện đang thử nghiệm trong Firefox 7.0.1. Đây có thể là lỗi của Firefox, nhưng chỉ có số này other question làm bằng chứng.

+0

Tôi đã tìm thấy điều này: https://bugs.webkit.org/show_bug.cgi?id=28832 báo cáo lỗi được gửi cho Safari - bạn có đang thử nghiệm nó trên đó không? Bản trình diễn của bạn dẫn đến kết quả là 'sai, sai, đúng' dự kiến ​​trên Chrome 15, ít nhất. – Ryan

+0

@minitech: Tôi đang thử nghiệm trên Firefox 7. – alex

Trả lời

2

Tôi đã có câu trả lời, nhưng bạn sẽ không thích nó ...

Khi hình ảnh trong câu hỏi được tạo ra với document.createElement, nó hoạt động. Xem http://jsfiddle.net/minitech/nmuQ8/ Tôi phát hiện ra rằng điều này làm việc trong khi tạo một thử nghiệm để xem liệu nó có hoạt động không, vì vậy cho đến nay tôi không có cách nào để biết liệu sự thay thế có thực sự cần thiết hay không.

+0

+1 công trình, rất thú vị. Tôi có thể hang out để xem một giải pháp tốt hơn có đi kèm không :) – alex

8

Từ w3c-docs

Các IDL thuộc tính hoàn chỉnh phải trả về true nếu bất kỳ của kiện sau là đúng:

  • Thuộc tính src được bỏ qua.
  • Giá trị của thuộc tính src là chuỗi rỗng.
  • Tác vụ cuối cùng được xếp hàng bởi nguồn tác vụ mạng khi tài nguyên đã được tìm nạp đã được xếp hàng đợi, nhưng chưa được chạy chạy và phần tử img không ở trạng thái bị hỏng.
  • Phần tử img hoàn toàn khả dụng.

Âm thanh như kết quả là chính xác. Giả sử hình ảnh inital được lưu trong bộ nhớ cache, sau đó hình ảnh đã được tải xuống.
Nó không có bất kỳ ảnh hưởng nào đối với thuộc tính hoàn chỉnh khi bạn thay đổi src (xếp hàng một tác vụ khác)

Tôi chơi xung quanh một chút và có vẻ như bạn có kết quả mong đợi khi bạn xóa src- trước khi thiết lập src mới. Demo: http://jsfiddle.net/doktormolle/UNEF7/

Giải thích: Khi không src-thuộc tính là hiện trạng thái của hình ảnh quay sang "vỡ" (điều kiện thứ 3 sẽ không phù hợp nữa) và nó sẽ không được hoàn thành trước khi ressource mới đã được tải .

+0

+1 cảm ơn, thông tin hữu ích. – alex

+0

+1 để liên kết với thông số W3C. Lưu ý rằng thông số W3C bạn liên kết đến hiện là bản nháp, do đó nó vẫn đang thay đổi. Kết quả là tôi đoán, điểm thứ ba bạn đề cập đến bây giờ là "chỉ" nói '" Nhiệm vụ cuối cùng được xếp hàng bởi nguồn tác vụ mạng khi tài nguyên đã được tìm nạp đã được xếp hàng đợi ". Và bây giờ có thêm một điểm nữa nói "' Phần tử img bị hỏng "." –

+1

Nhân tiện, ai đó có thể giải thích câu đó từ spec "" Nhiệm vụ cuối cùng được xếp hàng bởi nguồn nhiệm vụ mạng khi tài nguyên đã được tìm nạp đã được xếp hàng đợi. " –

Các vấn đề liên quan