Неправильно ли поместить тег < script> после тега</body>?
Как неправильно размещать тег script после закрытия тега тела (</body>
).
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
Ответы
Ответ 1
Он не будет проверять вне тегов <body>
или <head>
. Это также не будет иметь большого значения. если вы не выполняете манипуляции с DOM, которые могли бы разбить IE, прежде чем элемент body полностью загрузится — чтобы положить его непосредственно перед закрытием </body>
.
<html>
....
<body>
....
<script type="text/javascript" src="theJs.js"></script>
</body>
</html>
Ответ 2
Да. Только комментарии и конечный тег для элемента html разрешены после тега конца для тела.
Браузеры могут выполнять восстановление ошибок, но вы никогда не должны зависеть от этого.
Ответ 3
Как сказал Энди, документ будет недействительным, но, тем не менее, сценарий все равно будет интерпретирован. Смотрите фрагмент из 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;
...
Ответ 4
IE больше не разрешает (начиная с Версии 10) и игнорирует такие скрипты. FF и Chrome все еще терпят их, но есть вероятность, что когда-нибудь они откажутся от этого как нестандартного.
Ответ 5
Да. Но если вы добавите код вне его, скорее всего, не будет конца света, так как большинство браузеров исправят его, но по-прежнему плохой практикой.
Ответ 6
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
Ответ 7
Процедурно вставьте "скрипт элемента" после того, как "тело элемента" является "ошибкой синтаксического анализа" по рекомендованному W3C процессу. В "Tree Construction" создайте ошибку и запустите "tokenize again" для обработки этого содержимого. Так что это как дополнительный шаг. Только тогда может быть запущено "Выполнение скрипта" - см. Схему процесса.
Все остальное "ошибка разбора". Переключите "режим вставки" в "в теле" и повторно обработайте токен.
Технически браузером это внутренний процесс, как они маркируют и оптимизируют его.
Я надеюсь, что я кому-то помог.