@bahanov

Почему автоматически добавляется закрывающий тег?

Если на странице такая разметка:
<p>
<form action="doit">
</p>

Если открыть исходный код страницы, то там будет тоже самое. Но если зайти в Инструменты разработчика, то там будет такая картина:
<p></p>
<form action="doit">
<p></p>

Т.е. добавляются закрывающий тег /p в начале и открывающий тег p в конце.
В MSDN написано, что закрывающий тег не обязателен, если после открывающего идет тег form. Но ничего не написано, что теги будут дополняться автоматически.
Как сделать, чтобы они не добавлялись?
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 2
Дело в том, что инструменты разработчика оперируют не разметкой, а DOM.

Как браузер отображает вам страницу?
Браузер парсит текст HTML, превращая этот текст в программные объекты, которые уже записывает в память, чтобы можно было с этими объектами быстро работать прямо в памяти.
Структура этих объектов в памяти называется DOM - Document Object Model. Т.е. это программная модель того, что вы там понаписали в HTML-тексте.
Фактически браузер уже забывает о самом тексте, и работает с этими объектами.
Так же, браузер знает, с кем он имеет дело, поэтому "старается" по максимуму "исправить" все ваши ошибки в HTML, пытается понять, что вы имели ввиду и хоть что-нибудь вывести на экран.

А когда вы открываете Инструменты разработчика, то браузер берет эти объекты из памяти и просто отображает их в виде знакомых человеку тегов HTML. Оригинальный текст уже давно забыт. Поэтому все теги в инструментах будут закрыты, все лишние символы пропущены, всё будет красивенько и чистенько.

Насколько мне известно, поделать с этим ничего нельзя
Ответ написан
Комментировать
@SelenIT3
Закрывающий тег для <p> опционален. Алгоритм парсинга по стандарту автоматически неявно подставляет </p> перед любым элементом, который в HTML4 называли «блочным» (сейчас их называют «non-phrasing flow content»). А потом парсер видит бесхозный явный закрывающий тег и исправляет эту ошибку, добавляя перед ним открывающий.

Если нужен контейнер для формы, лучше использовать <div>. Но с большой вероятностью это не нужно, форма сама по себе контейнер, стили можно навешивать прямо на нее.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы