2014-06-09 14 views
8

Podczas sprawdzania znaczników poprzez służbę walidatora W3C ale to poniżej błęduStray koniec tag img

Stray tag koniec img

Kod jest jak poniżej

<a title="text" href="url"> 
<img class="text" src="imgSrc" alt="Text"></img> 
</a> 

Co to znaczy? Jak możemy tego uniknąć?

+1

Powinieneś zawsze określać, który ciąg 'doctype' (jeśli taki istnieje) pojawia się na początku strony, ponieważ określa to tryb sprawdzania poprawności. –

Odpowiedz

11

Jeśli dokument jest zgodny z XHTML następnie trzeba zamknąć img tag z <img src="image.jpg"/>, nie z <img>...</img>.

Jeśli dokument jest HTML5 zgodne, to nie potrzebują /> udział, należy <img src="image.jpg">

tylko A jeśli zastanawiasz się, co oznacza, że ​​dokument powinien być XHTML lub HTML5 zgodny - to jest bardzo Pierwszy wiersz strona HTML, tzw document type definition:

<!DOCTYPE HTML> dla HTML5 i

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> dla XHTML 1.0 Transitional

UWAGA: Deklaracja jest obowiązkowa (jeśli chcesz, aby twoje strony były sprawdzane za pomocą walidatora HTML) i zawsze powinna być pierwszą rzeczą w dokumencie HTML.

UWAGA: Chociaż definicja typu dokumentu nie jest technicznie wymagane do funkcjonowania strony internetowej, jest to dobra praktyka, aby zawsze umieścić go w kodzie. Kiedy uczysz się budować strony internetowe, musisz zawsze mieć w swoim kodzie definicję typu dokumentu.

Więcej czytanie:

+1

' ...' jest poprawny XHTML, po prostu nie jest zalecany dla stron internetowych ze względu na kompatybilność. Oczywiście problem nie pojawia się podczas sprawdzania poprawności w XHTML. –

+0

Witam @ bodi0 dzięki za odpowiedź. Pomogło mi to. –

2

Zasadniczo oznacza to, że należy usunąć </img>, ponieważ nie jest potrzebna do <img> tagu:

<img class="text" src="imgSrc" alt="Text"> 

Alternatywnie, tylko w celach informacyjnych, istnieje również XHML sposób „zamykając” tag:

<img class="text" src="imgSrc" alt="Text" /> 
1

Jako taki, „Stray znacznika końcowego ...” oznacza po prostu, że znacznik końcowy nie jest dozwolone w kontekst, w którym się pojawia. Jak wyjaśnia walidator: "Validator znalazł końcowy tag dla powyższego elementu, ale ten element nie jest aktualnie otwarty. Jest to często spowodowane przez pozostawiony znacznik końcowy z elementu, który został usunięty podczas edycji lub przez niejawnie zamknięty element (jeśli masz błąd związany z użyciem elementu, który jest niedozwolony, prawie na pewno tak jest). W tym ostatnim przypadku błąd zniknie, gdy tylko usuniesz pierwotny problem."

Z symptomów (ciąg znaków komunikatów o błędach) możemy wywnioskować, że walidujesz HTML5 w serializacji HTML. Oznacza to, że żaden element końcowy nie jest dozwolony dla elementu img, ponieważ znacznik początkowy jest traktowany jako również zamykający element ("element niejawnie zamknięty").

Tym samym rozwiązaniem jest usunięcie znacznika </img> lub sprawdzenie poprawności względem HTML5 w serializacji XHTML. Ta ostatnia nie jest praktyczna dla stron internetowych, ale jeśli używasz HTML do czegoś innego, powinieneś zweryfikować przez URL odwołanie do zasobu obsługiwanego z typem treści XML.