На это странно смотреть и, конечно, он не соответствует синтаксису XML , но это файл HTML для визуализации ... по крайней мере, браузеры справятся с этим, включив свободно плавающий текст в дерево DOM. Например:
Это поведение фактически определено, хотя технически оно создает ошибки синтаксического анализа. Когда после тега body размещается контент, он обрабатывается так, как если бы он был в теле . Даже если он стоит после тега </html>
, он подпадает под аналогичное правило для «после тела» , которое также добавляет его к содержимому тела.
Вывод: HTML is грязный язык и более гибкий, чем здравый смысл в том, как он обрабатывает контент.
Бонус: можно даже утверждать, что вы можете опустить теги <html>
, <head>
и <body>
. Пока у вас есть Doctype, он полностью действителен - он даже не вызывает ошибку разбора (в отличие от вашего исходного случая, который является ошибкой разбора, но все еще обрабатывается); сработает даже опускание типа документа, но браузер перейдет в режим причуд для его обработки.