2016-07-22 6 views
0

Google chrome (и, вероятно, все последние браузеры) автоматически добавляет закрывающий тег элементов html, когда они отсутствуют. Он автоматически добавит закрывающий тег в конце родительского элемента.Пропуск html закрывающих тегов

Пример 1:

<tag1>content1<tag2>content2<tag3>content3 

Выведет:

<tag1> 
    content1 
    <tag2> 
     content2 
     <tag3> 
      content3 
     </tag3> 
    </tag2> 
</tag1> 

Пример 2:

<tag1>content1<tag2>content2</tag2><tag3>content3 

Выведет:

<tag1> 
    content1 
    <tag2> 
     content2 
    </tag2> 
    <tag3> 
     content3 
    </tag3> 
</tag1> 

Я знаю, что предыдущие примеры HTML являются недействительными и трудно читать. Но удаление закрывающих html-тегов после этого правила с помощью html minifier может уменьшить размер шаблонов. Почему это не правило html minifier? Есть ли какие-то ограничения?

Edit:Контекст: Я не говорю о каких-либо имя тега, в частности, именно поэтому я использовал tagX в моих примерах. Например. с директивами элементов angularjs

+0

Они недействительны, потому что вы используете составленные элементы вместо HTML. Некоторые элементы имеют необязательные концевые теги (а некоторые имеют необязательные стартовые теги) и могут быть абсолютно корректными. – Quentin

+0

Мы не можем сказать вам, почему мини-редактор HTML не использует дополнительные правила тэгов, потому что вы не сказали нам, какую часть программного обеспечения вы говорите (и ответ, вероятно, будет либо «потому что вы не установили правильные варианты "или" как мы должны знать, спросите автора ") – Quentin

+0

Почему вы даже заботитесь о сохранении пары десятков байтов? Добавьте новый значок в свою навигацию, и любые сбережения будут уничтожены. –

ответ

1

Хорошее наблюдение. Это было сделано Firefox в течение длительного времени, а также помогает разработчикам с семантикой. Но проблема, с которой мы сталкиваемся, - это то, о чем мы только что упоминали. Firefox, Chrome. Но что делает IE? Или экранизаторы? Я знаю, что Safari не делает этого на том же уровне, что и FF и Chrome.

Он подходит для поддержки браузеров и имеет общий глобальный консенсус относительно действительного html. Наличие плана для работы вместо конкретных реализаций браузера означает, что мы можем безопасно управлять веб-технологиями через старые и новые устройства, которые не отказывают в безопасности своих парсеров.

+2

Браузеры относительно согласны с тем, что долгое время они обрабатывают недействительный HTML. HTML 5 включает в себя правила синтаксического анализа, призванные сделать их более понятными. Множество элементов имеют явно необязательные концевые теги, поэтому он может быть даже недействительным HTML, о котором задается вопрос (к сожалению, приведенные примеры не являются [MCVE] s) – Quentin

+0

Как и в случае с файловыми программами, я не знаю ни одной сделки с необработанный HTML. Только API, предоставленные им браузерами. – Quentin

+0

@Quentin Вот что я имею в виду. «относительно последовательный» и не зная возможности устройств, попадающих на рынок, уже неплохо придерживаться более высоких стандартов. Считыватели экрана в целом полагаются на действительный html для работы. В зависимости от того, насколько продвинутым браузером устройства это может включать или не включать отказоустойчивый html, закрывающие теги для вас или исправление блоков или встроенных элементов, которые Firefox делает много, но сафари нет. Опираясь на конкретные реализации браузера, которые могут или «относительно согласованы» не поддерживают 100%. –