Как неправильно размещать тег script после закрытия тега тела (</body>
).
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Как неправильно размещать тег script после закрытия тега тела (</body>
).
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Он не будет проверять вне тегов <body>
или <head>
. Это также не будет иметь большого значения. если вы не выполняете манипуляции с DOM, которые могли бы разбить IE, прежде чем элемент body полностью загрузится — чтобы положить его непосредственно перед закрытием </body>
.
<html>
....
<body>
....
<script type="text/javascript" src="theJs.js"></script>
</body>
</html>
Да. Только комментарии и конечный тег для элемента html разрешены после тега конца для тела.
Браузеры могут выполнять восстановление ошибок, но вы никогда не должны зависеть от этого.
Как сказал Энди, документ будет недействительным, но, тем не менее, сценарий все равно будет интерпретирован. Смотрите фрагмент из WebKit, например:
void HTMLParser::processCloseTag(Token* t)
{
// Support for really broken html.
// we never close the body tag, since some stupid web pages close it before
// the actual end of the doc.
// let rely on the end() call to close things.
if (t->tagName == htmlTag || t->tagName == bodyTag
|| t->tagName == commentAtom)
return;
...
IE больше не разрешает (начиная с Версии 10) и игнорирует такие скрипты. FF и Chrome все еще терпят их, но есть вероятность, что когда-нибудь они откажутся от этого как нестандартного.
Да. Но если вы добавите код вне его, скорее всего, не будет конца света, так как большинство браузеров исправят его, но по-прежнему плохой практикой.
Google рекомендует это в отношении "Оптимизации CSS". Они рекомендуют встраивать критические вышеописанные стили и откладывать остальные (файл css).
Пример:
<html>
<head>
<style>
.blue{color:blue;}
</style>
</head>
<body>
<div class="blue">
Hello, world!
</div>
</body>
</html>
<noscript><link rel="stylesheet" href="small.css"></noscript>
Смотрите: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery
Процедурно вставьте "скрипт элемента" после того, как "тело элемента" является "ошибкой синтаксического анализа" по рекомендованному W3C процессу. В "Tree Construction" создайте ошибку и запустите "tokenize again" для обработки этого содержимого. Так что это как дополнительный шаг. Только тогда может быть запущено "Выполнение скрипта" - см. Схему процесса.
Все остальное "ошибка разбора". Переключите "режим вставки" в "в теле" и повторно обработайте токен.
Технически браузером это внутренний процесс, как они маркируют и оптимизируют его.
Я надеюсь, что я кому-то помог.