2012-10-02 14 views

Odpowiedz

6

Ustawiane po pobraniu obrazu.

Nigdy nie widziałem tego wyraźnie w HTML, jak w twoim przykładzie (MDN mówi, że to nie jest atrybut dla elementu img). Używam tylko do sprawdzenia, czy obraz został pobrany przy pomocy JavaScript (są jednak problemy z przeglądarką). Właściwość na HTMLImageElement zwraca Boolean.

[].forEach.call(document.querySelector("img"), function(img) { 
    // Loaded? 
    img.complete && (img.style.border = "5px solid #f00"); 
}); 
+0

Czy warto podkreślić, że jest to niestandardowy znacznik, i że jest on dodawany przez niektóre javascript (prawdopodobnie w module obsługi obrazu) zamiast samej przeglądarki? – enhzflep

+0

@Zaffy Pewnie, ale ma on własne problemy. – alex

+0

Dziękujemy za informacje! – user1323246

0

Służy do sprawdzania, czy obraz się zakończył.

document.getElementsByTagName('img')[0].complete 

Zwraca true jeśli zakończeniu ładowania, w przeciwnym wypadku false. Jednak nie jest używany jako atrybut, jak w twoim przykładzie.

10

Atrybut complete ma znaczenie zdefiniowane w specyfikacji, a to chyba nie ma znaczenia (choć można go odczytać za pomocą metody getAttribute()). Kod w pytaniu prawdopodobnie opiera się na pewnym nieporozumieniu.

Według projektów HTML5 istnieje completewłaściwość dla obiektu odpowiedniego elementu img, jak na interfejsie HTMLImageElement. definition of the complete property oznacza po prostu, że wartość jest prawdziwa, gdy przeglądarka całkowicie otrzymała obraz (choć są tu pewne niuanse). Ponieważ ma to być kontrolowane przez przeglądarkę, odzwierciedlając status ładowania, naturalne jest, że właściwość jest zdefiniowana jako tylko do odczytu.

Ta właściwość jest szeroko obecna w przeglądarkach, ale widocznie w zepsuty sposób: jeśli masz element img, który odwołuje się do nieistniejącego zasobu (404 Not Found), to Chrome i Firefox wskazują właściwość jako mającą wartość true (IE tutaj dostaje rzeczy: fałszywe). Więc własność na razie nie jest zbyt przydatna.

Ustawienie atrybutu w HTML nie ma na to wpływu. Atrybut HTML i właściwości obiektu elementu odpowiadają sobie nawzajem tylko wtedy, gdy zdefiniowano korespondencję.

+3

Okazuje się, że IE popełniło błąd, przynajmniej [zgodnie ze specyfikacją] (http://www.w3.org/TR/html5/embedded-content-0.html#dom-img-complete). Powiedziałbym, że wszyscy się mylili - prosta boolean to za mało. Potrzebujemy czegoś bardziej solidnego, jak status, np. Załadowanego, ładującego, nie znalezionego, nieprawidłowego formatu itp. – gilly3

Powiązane problemy