2013-02-18 18 views
13

Czy atrybut "klasa" elementów HTML5 może zawierać podziały wierszy? Czy jest to dopuszczalne w specyfikacjach i czy przeglądarki go obsługują?Czy atrybut elementu "class" HTML może zawierać podziały wierszy?

Pytam, ponieważ mam kod, który dynamicznie wstawia różne klasy do elementu, a to stworzyło jedną bardzo długą, trudną do zarządzania. Zazwyczaj będę budował wartość klasy za pomocą zmiennej, ale CMS, którego używam, wymaga umieszczenia tagów warunkowych szablonu w linii z kodem HTML. Nie mogę używać zmiennych ani PHP.

W swoich badaniach odkryłem, że niektóre atrybuty znaczników HTML muszą być pojedynczą linią, ale nie byłem w stanie stwierdzić, czy atrybut klasy jest jednym z nich.

Czy ktoś wie coś na ten temat?

+0

Proszę zaksięgować kod, jego zawsze lepiej pokazać wat, nad którym pracujesz z wycinkiem ets i strony testowe – Shail

+1

Które atrybuty "atrybutami muszą być w jednym wierszu"? – unor

Odpowiedz

18

Per na HTML 4 spec atrybut class jest CDATA:

klienckie powinny interpretować wartości atrybutów w następujący sposób:

o Wymień podmioty znaków ze znakami

o Ignoruj ​​linia zasila

o Zastąp każdy powrót lub kartę karetki pojedynczym odstępem.

dzięki czemu jesteś w dobrej formie.

The HTML5 spec opisuje klasę jako set of space separated tokens, gdzie "przestrzeń" obejmuje znaki nowej linii.

Więc powinieneś też być dobry.

+0

Dzięki Dancrumb. Czy sądzisz, że większość przeglądarek będzie obsługiwała to dobrze? –

+2

powinny ... specyfikacja HTML4 jest z roku 1999 – Dancrumb

+2

Re: zgodność z przeglądarką - tak się składa, że ​​ostatnio natknąłem się na przypadek w pracy, w którym używanie nowych znaków w atrybutach klasowych uniemożliwiało jQuery prawidłowy wybór za pomocą klasycznych selektorów CSS w IE 8 - tak jak IE 8 lub jQuery-in-IE-8 nie widział linii nowej jako białej spacji, ale jako część nazwy klasy. Zastąpienie znaków nowej linii spacjami rozwiązało problem. Frustrująco, chociaż mogę to powtórzyć z moim konkretnym kodem z pracy (sprawdzanie przed i po zamianie znaków nowej linii), w prostszych testowych przypadkach wydaje się, że IE 8 obsługuje to dobrze i nie mogę udostępnić mojego kodu z pracy . –

4

Czy atrybut elementów HTML5 może zawierać podział wierszy?

Tak. The HTML5 spec says:

atrybut, jeśli jest określony, musi mieć wartość, która jest set of space-separated tokens reprezentujących różne klasy, że element należący do.

przyst'puje łącza znaczy:

zestaw przestrzeni oddzielonych żetonów jest łańcuch zawierający zero lub więcej słów (znany jako znaczników), oddzielone przez jedną lub więcej space characters, gdzie słowa składa dowolnego ciągu jednego lub więcej znaków, z których żaden nie jest space characters.

A spacje to:

  • przestrzeni (' ')
  • zakładka (\t)
  • line feed (\n)
  • forma podawania (\f)
  • powrotu karetki (\r)

W przestrzeń znaków, dla celów niniejszej specyfikacji, są to u + 0020 przestrzeni "Karta" (U + 0009), "LF" (U + 000A) "FF" (U + 000C) i "CR" (U + 000D).

nowymi liniami, jak można dodać do dokumentów UTF-8 są:

  • linia zasila (\n)
  • powrotu karetki (\r)
  • znak powrotu karetki, a następnie natychmiast przez nowego wiersza (\r\n)
Powiązane problemy