HTML атрибут с/без кавички

Има ли разлика между следните кодови блокове?

<iframe src="http://example.com" width=100%></iframe>
<iframe src=http://example.com width="100%"></iframe>

Пробвах и двете и изглежда, че и двете работят, но питам, ако има нещо, с което трябва да внимавам?


person John    schedule 24.10.2012    source източник
comment
Вероятно зависи какъв браузър и версия използвате. (Особено по-стари браузъри)   -  person Tim    schedule 25.10.2012
comment
свързани: stackoverflow.com/questions/5398993/   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 18.09.2016


Отговори (6)


Всичко опира до истинската валидност на HTML маркирането. За това работи W3C (WWW Consortium). Много неща може да работят в HTML, но те трябва да бъдат валидирани, за да бъдат по-внимателно разпознати от уеб браузъра. Можете дори да пропуснете таговете <html> и </html> в началото и в края, но това изобщо не е препоръчително, никой не го прави и се счита за „лош код“.

Затова е по-правилно да ги поставим в кавички.

person Davit    schedule 24.10.2012
comment
В HTML (специализирани SGML) версии, преди HTML5, и двете са валидни. Няма //фалшива валидност// или //истинска валидност//; или документът е валиден според неговата DOCTYPE декларация, или не е. Той обаче не е валиден в XHTML (приложение на XML). - person Rainer Rillke; 16.08.2016
comment
Имайте предвид, че изобразеният HTML ще включва кавичките - person Aryan Beezadhur; 26.11.2020

Няма практическа разлика, освен

  1. ако потвърдите страницата си, кавички може или не могат да бъдат необходими, за да се избегнат съобщения за грешка, в зависимост от използвания тип документ
  2. ако обслужвате страницата с тип XML съдържание на браузъри (което е рядко и рядко полезно), тогава кавичките са задължителни – в противен случай страницата изобщо не се показва, а само съобщение за грешка
  3. ако страницата е обработена по друг начин с XML инструменти, кавичките са необходими.

В противен случай кавичките наистина са необходими само ако стойността на атрибута съдържа интервал, нов ред, кавички Ascii ("), апостроф Ascii ('), ударение (`), знак за равенство (=), знак за по-малко (‹) или знак за по-голямо от (>). Така че style = width:20em ще работи (въпреки че може да се разглежда като малко неясен), докато style = width: 20em не би – поради интервала, ще трябва да напишете style = "width: 20em".

Много хора винаги пишат кавички около всички стойности на атрибути за простота. Други смятат, че кавичките правят кода малко объркан, така че ги пропускат, когато е възможно.

Съвсем независимо от това, src="www.example.com" означава относителна URL препратка, а не това, което хората очакват да означава. Вероятно имахте предвид src="http://www.example.com".

person Jukka K. Korpela    schedule 24.10.2012

Според W3C има четири вида синтаксис на атрибута:

  1. синтаксис на празен атрибут
  2. синтаксис на атрибут-стойност без кавички
  3. синтаксис на атрибут-стойност в единични кавички
  4. синтаксис на атрибут-стойност в двойни кавички

Те наистина се отнасят за HTML5, но когато се говори за ‹ HTML5, W3C казва, че се изискват кавички (единични или двойни) въз основа на използвания тип документ (напр. строг, преходен и т.н.).

person j08691    schedule 24.10.2012
comment
Изискването за оферта не се определя от това дали се използва строг или преходен вкус. Определя се от диалекта за маркиране: HTML или XHTML. - person BoltClock; 08.08.2018

Не и двете са еднакви..

В HTML 5 кавичките около атрибутите са само незадължителни. (Освен ако стойността не съдържа интервали или специални знаци)

Но смятам, че е по-добра практика да ги оградите в цитати.

person Sushanth --    schedule 24.10.2012
comment
Най-простият и добър отговор. Усещането, че е по-добра практика винаги да се използват кавички, е повсеместно в уеб общността, но това е само усещане. За ръчно изработени документи това вероятно намалява много грешките, но ако някой изгражда автоматизиран HTML минимизатор, би искал да пропусне кавички, където е възможно. - person antonagestam; 03.10.2019

Това е от Google - най-добри практики - „Минимизиране на размера на полезния товар“ https://developers.google.com/speed/docs/best-practices/payload (мое ударение)

За да сте сигурни, че съдържанието ви се компресира добре, направете следното: ... Използвайте последователни кавички за атрибути на HTML тагове, т.е. винаги единични кавички, винаги двойни кавички, или никакво кавички където е възможно.

person tomo7    schedule 06.03.2014

Синтаксис на стойността на атрибут без кавички

Името на атрибута, последвано от нула или повече интервали, последвано от един знак U+003D EQUALS SIGN, последвано от нула или повече интервали, последвано от стойността на атрибута, която в допълнение към изискванията, дадени по-горе за стойностите на атрибута, не трябва да съдържа буквални знаци за интервал, никакви U+0022 знаци за КАВИЧКИ (), U+0027 знаци за АПОСТРОФ ('), U+003D знаци за ЗНАК ЗА РАВНО (=), U+003C знаци за ЗНАК ПО-МАЛКО ОТ (‹), U +003E знаци ПО-ГОЛЕМ ОТ ЗНАК (›) или U+0060 знаци GRAVE АКЦЕНТ (`) и не трябва да е празен низ.

Източник: W3 HTML5 спецификация – раздел 8.1.2.3. Атрибути

person georgeawg    schedule 08.08.2018