Следующий код:Почему самозакрытый тег скрипта не вызывает ошибки?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>A</title>
<script type="text/javascript" src="./script.js" />
<script type="text/javascript">alert("This is skipped.");</script>
</head>
<body>
</body>
</html>
проходит тест проверки в W3C и Chrome не отображает ошибки Javascript на этой странице. Тем не менее, весь текст <script type="text/javascript">alert("This is skipped.");
не анализируется механизмом Javascript, который просто ищет тег </script>
, даже если он сам закрыт. Однако файл «script.js» загружен.
В Chrome, Firefox и IE 11 это приводит к такому же поведению.
Почему это? Что на самом деле происходит здесь?
Самозакрывающиеся теги проверяются в html. И, очевидно, это не ошибка JavaScript, которая остановит выполнение, которое вы предполагаете. –
Это действительный _XML_, действительный 'application/xhtml + xml', но _HTML_ на самом деле происходит от более старого _SGML_, где есть несколько понятий, которые в общем виде (так равны) в _XML_, как правило, должны быть закрыты (самозакрытое 'br', неявно закрытое' p', явно закрытое 'textarea'); и 'script' должны быть явно закрыты. –