Насколько неправильно размещать тег script после закрывающего тега body ( </body>
). ?
<html>
....
<body>
....
</body>
<script type="text/javascript" src="theJs.js"></script>
</html>
javascript
html
DanC
источник
источник
Ответы:
Он не будет проверен вне тегов
<body>
or<head>
. Это также не будет иметь большого значения - если вы не выполняете DOM-манипуляции, которые могут сломать IE до полной загрузки элемента body, - чтобы поместить его непосредственно перед закрытием</body>
.источник
<script src="..." defer>
, который работает во всех основных браузерах (хотя с потенциально опасной ошибкой в IE9 и ниже).Да. Только комментарии и конечный тег для элемента html допускаются после конечного тега для тела.
Браузеры могут выполнять восстановление после ошибок, но вы никогда не должны зависеть от этого.
источник
Как сказал Энди, документ будет недействительным, но, тем не менее, сценарий все равно будет интерпретирован. Смотрите фрагмент из WebKit, например:
источник
IE больше не позволяет этого (начиная с версии 10, я полагаю) и будет игнорировать такие сценарии. FF и Chrome все еще терпят их, но есть вероятность, что когда-нибудь они откажутся от этого как от нестандартного.
источник
Процедурно вставить «скрипт элемента» после того, как «тело элемента» является «ошибкой синтаксического анализа» по рекомендованному W3C процессу . В «Tree Construction» создайте ошибку и запустите «tokenize again» для обработки этого содержимого. Так что это как дополнительный шаг. Только тогда может быть запущено «Выполнение скрипта» - см. Схему процесса .
Технически в браузере это внутренний процесс, как они маркируют и оптимизируют его.
Я надеюсь, что я кому-то помог.
источник
Да. Но если вы добавите код за его пределы, скорее всего, это не конец света, так как большинство браузеров исправят его, но все равно это плохая практика.
источник
Google фактически рекомендует это в отношении «CSS Optimization». Они рекомендуют встраивать критические стили выше сгиба и откладывать остальное (файл CSS).
Пример:
См .: https://developers.google.com/speed/docs/insights/OptimizeCSSDelivery.
источник
body
элемента. Эта статья Google никому не советует делать подобные вещи.Современные браузеры принимают теги сценариев в теле следующим образом:
По сути, это означает, что скрипт будет загружен после завершения страницы, что может быть полезно в некоторых случаях (а именно, манипулирование DOM). Тем не менее, я настоятельно рекомендую вам взять тот же сценарий и поместить его в тег head с помощью defer, поскольку он даст тот же эффект.
источник
script
тегов былevent
атрибут, который можно было бы определить, чтобы определить, когда анализировать скрипт. Таким образом, у вас естьevent="load" event="DOMContentLoaded"
для запуска сценария после создания DOM илиevent="beforeunload"
поbeforeunload
событию окна . Пример<script src="scripts/main.js" event="DOMContentLoaded"></script>
.